2014-11-03 4 views
0

ImageMagick을 사용하여 투명성 이상의 실제 콘텐츠가 있는지 여부를 이미지에서 쉽게 확인할 수 있습니까?ImageMagick을 사용하여 이미지 콘텐츠 확인

뒷 이야기는 알 수없는 콘텐츠로 이미지를 자르고 있지만 알려진 지역 맵 (게임 스킨을 생각하는 것)입니다. 이 부분을 위해 자르는 부분은 무언가를 포함하거나 그렇지 않을 것입니다. 뭔가 포함되어 있다면, 그걸로 뭔가해야합니다. 그렇지 않다면 나는 그것을 폐기하고 계속 전진해야합니다. 감사!

+0

"100 % 이상의 투명성"이란 무엇을 의미합니까? 어떤 것이 100 % 이상 투명 할 수 있습니까? –

+0

하하, 가난한 표현. 용서. 나는 어떤 내용이라도 간단하게 모든 투명성을 언급했다. 위대한 이름, 그런데, @ReticulatedSpline. – slant

답변

1

시도 할 수있는 몇 가지 아이디어가 있지만 이미지를 보지 못했으므로 이미지를 테스트해야합니다.

첫째,이 같은 이미지의 색상 수를 셀 수 : 유일한 투명성이

identify -format "%[k]" input.png 

경우 이미지에 다른 색상이있는 경우, 색상의 수는 1이됩니다, 그것은 하나보다 큽니다. 이것은 순수한 단색 이미지와 완전히 투명한 이미지를 구별 할 수는 없습니다. 그것은 문제 일 수도 있고 아닐 수도 있습니다. 나는 루비를 못하는,하지만 난 당신이 루비 같은 k에 액세스 믿습니다 그 것이다

identify -format "%[mean]" input.png 

:

image["%[k]"] 

둘째, 당신은 이미지의 평균 픽셀 색상을 계산할 수있다, 이런 식으로 완전히 투명한 이미지의 경우 0이됩니다. 그러나 문제가 될 수도 있고 그렇지 않을 수도있는 완전히 검은 색 이미지의 경우 0이됩니다.

이러한 매개 변수 모두

는 또한보다 강력한 테스트를 원한다면 완전히 trasnparent 이미지와 완전히 검은 이미지를 구분하는 예를 들어,

identify -verbose input.png 

사용하여 볼 수 있습니다, 당신은 테스트 중 하나를 사용할 수 있습니다 이상과 같이, 상기 홀수 에지 케이스 배제 화상의 왼쪽 상단에서 단일 픽셀의 값을 얻는와 결합 :

convert black.png -format "%[pixel:p{0,0}]" info: 
black 

convert transparent.png -format "%[pixel:p{0,0}]" info: 
none 

다른 옵션과 같이, 히스토그램을 계산하고 표시 될 색상 :

convert input.png -format %c histogram:info:- 
+0

ImageMagick을 사용하여 궁극적으로 단일 단계 솔루션을 찾고 있는데, 아직 존재하지 않을 수도 있습니다.이를 위해, 이것은 내가 찾고있는 것을 성취하는 한 가지 방법이므로이 질문에 대한 대답으로 이것을 받아 들일 것입니다. 도움에 정말 감사드립니다. 다른 사람이이를 직접 수행 할 수있는 또 다른 방법이 있다면 알려 주시기 바랍니다. – slant

0

나는 다음과 같은 코드를 사용하여 결국 :

def transparent? image 
    solid_color = image['%[mean]'].to_i == 0 # transparent or solid color 
    not_opaque = !image['%[opaque]'].to_bool # no transparency remaining 
    solid_color && not_opaque 
end 

image['%[mean]']이 같은 단일 색상이나 투명도에 전체 나에게 공을 준다 마크 Setchell가 언급 한 바와 같이. 이것은 나를 반으로 길렀다. 단일 색상이 투명한지 여부를 확인하기 위해 image['%[opaque]']을 사용했습니다. 이것이 "사실"이면 색이됩니다. 그렇지 않으면 투명합니다. .to_bool 메서드는 단순히 결과 부울 문자열을 가져 와서 실제 부울 값으로 변환합니다.

다른 사람에게 도움이되기를 바랍니다. Mark, 이것을 알아 내기위한 중요한 시작에 다시 한번 감사드립니다.