2017-04-16 9 views
0

손상된 .png 이미지 파일과 관련된 특정 문제가 발생하여 이미지 편집기 (Apple Preview)에서 이미지 파일을 열고이를 명시 적으로 변경하지 않고 다시 저장함으로써 극복 할 수있었습니다.python을 사용하여 이미지 편집기에서 이미지 파일 열기 및 저장을 모방하는 방법?

동일한 절차를 거쳐야하는 수천 개의 비슷하게 손상된 이미지 파일이 있습니다. 파이썬으로 자동화하는 방법이 있습니까?

다음 순진 코드는 작동하지 않습니다

>>> with open('an_image.png', 'rb') as f: 
...  data = f.read() 
... with open('an_image.png', 'wb') as f: 
...  f.write(data) 

하지 않는 이유는이 코드를 사용할 수 있습니까? 이미지 편집기가 문제를 해결하기 위해 수행하는 작업은 무엇이며 어떻게 프로그래밍 방식으로 모방 할 수 있습니까?

내 운영 체제는 macOS Sierra 버전 10.12.4입니다.
파이썬 버전은 3.6.1입니다.

Here은 손상된 파일 중 하나의 예입니다.


* 관심있는 사용자는 원래 문제는 here입니다.

+1

의 등록 상표입니다 점에 유의해야합니까. PIL과 같은 이미지 모듈을 사용해보십시오. – stovfl

+1

파일 손상의 특성을 아는 것이 도움이됩니다. 손상된 이미지를 게시 할 수 있습니까? –

+0

@ GlennRanders-Pehrson : 게시물의 마지막 부분에 링크 된 게시물에서 corrption의 본질이 설명됩니다. –

답변

1

예제 파일 https://i.stack.imgur.com/a5uXX.png은 실제로 PNG 파일이 아닙니다. "CgBI" file 대신 Apple X-code 소프트웨어에서 만든 PNG 형식의 파일로 악성 "pngcrush"응용 프로그램을 사용하고있을 수 있습니다. CgBI 파일에서 유효한 PNG 파일을 복구하는 다양한 방법이 있습니다 (불투명하지 않은 픽셀의 기본 색상 값에서 피할 수없는 정밀도 손실 제외).

  • 애플 수정 pngcrush는 자체 "아이폰 최적화"

  • 는 찾을 수있는 공개, 오픈 소스 pngdefry 응용 프로그램 와 같은 타사 응용 프로그램이 있습니다 되 돌리는 할 수 입니다 그물에. 어떻게 파이썬 호출을 통해 pngdefry 또는 pngcrush를 호출하는 방법을 보여주는, 그러나 희망이 파일에 무슨 일이 일어 났는지를 알려 적어도 바른 길에 당신을 설정합니다하지 않는

죄송합니다.

법적 고지은 : 나는 애플과 아이폰 는 SYS 아무것도 변경되지 않습니다 읽기/쓰기 애플, 주식

+0

고마워요! pngdefry는 또한 불투명하지 않은 픽셀의 기본 색상 값에서 정밀도가 떨어지는 문제가 있습니까? –

+1

예, 불가피합니다. 알파가 0 인 모든 색상의 픽셀을 고려하십시오 (RGBA = {R, G, B, 0}). CgBI 파일은 해당 픽셀을 RGBA = {0,0,0,0}으로 나타내며 기본 색상을 복구 할 수 없게 만듭니다. –