각각에 동일한 그래픽이 포함 된 PNG 스크린 샷이 많이 있습니다. 조각은 모든 이미지에서 동일한 치수를 갖습니다.
각 파일에서 위치를 찾는 데 사용할 수있는 명령 줄 프로그램은 무엇입니까 (하나씩 공급)?
다음은 대략적인 아이디어 일 뿐이며 준비된 솔루션이 없습니다 (특히 코드가 없습니다!).
작은 그래픽과 스크린 샷의 샘플을 원시 (압축되지 않은) 형식으로 변환 한 다음 ( TGA 는 압축이 전혀 없으며 모든 픽셀의 완전한 덤프 일뿐입니다) 스크린 샷 파일의 그래픽을 grep합니다. 그런 다음 위치를 계산하십시오.
계산을 위해서는 Image Magick의 identify
명령으로 얻을 수있는 이미지의 크기 (너비와 높이)가 필요합니다 . 그건:
GRAPHIC_WIDTH=$(identify -verbose graphic.tga | sed -n '/Geometry:/s%.*Geometry:\ \(.*\)x.*%\1%p')
GRAPHIC_HEIGHT=$(identify -verbose graphic.tga | sed -n '/Geometry:/s%.*x\([^+]*\)+.*%\1%p')
TGA 파일의 처음 18 바이트에는 픽셀 정보가 포함되어 있지 않으므로 생략해야합니다.
tail -c +19 graphic.tga > graphic.colorinfo
그리고 MatthewRock의 주석에서와 같이 grep
한 줄에 저장되고 스크린 샷의 픽셀로 둘러싸여 있기 때문에 전체 그래픽을 한 번에 검색 할 수 없습니다. 즉, 그래픽의 첫 번째 픽셀 줄을 검색해야합니다. 그리고 그것이 발견되면 두 번째 줄 X 픽셀을 더 검색합니다. 여기서 X는 스크린 샷의 너비에서 그래픽 너비를 뺀 값입니다.
grep
옵션 -F
및 K 픽셀에서 새 줄로 구분 된 그래픽 파일과 함께 사용해야합니다 . 여기서 K는 그래픽의 너비에 해당 색상 깊이 (바이트)를 곱한 값입니다. 이 작업을 수행 head
하고 tail
. colordepth가 8 비트이면 모든 픽셀 라인의 길이는 K 바이트이고 colordepth가 더 높은 경우 (예 : 24 비트 또는 3 바이트) 픽셀 라인은 K x 3 바이트 길이입니다.
길이가 20 픽셀이고 colordepth가 3 바이트 인 10 번째 줄은 다음과 같은 방법으로 얻을 수 있습니다.
head -c $((10*20*3)) graphic.colorinfo | tail -c 60
물론이 접근 방식이 쉘 코드로 작성하는 것이 다소 복잡 할 수있는 경우가 있습니다. 예를 들어 스크린 샷이 완전히 단색 흰색 (및 그래픽도)이고 그래픽에 검은 색 픽셀이 하나만있는 경우입니다.
아이디어는 임시 시작 좌표 (첫 번째 줄이 일치하는 가장 왼쪽 및 맨 위 픽셀의 위치)를 저장하고 거기에서 한 줄이 일치하지 않을 때까지 아래 줄을 검색 한 다음 일치하는 다음 첫 줄부터 시작하는 것입니다.
마지막으로 hexeditor와 같은 바이트 수준 (텍스트 도구로 이미지 작업이 아님)에서 수행하는 것이 훨씬 더 쉬울 것이라고 말해야합니다. 또는 C 또는 Python을 더 잘 사용하십시오. 그러나 접근 방식은 동일합니다 (일치하는 줄 검색).
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다