imagemagick의 변환이 예기치 않게 배경색을 변경합니다.

imagemagick의 변환이 예기치 않게 배경색을 변경합니다.

내가 달성하려는 것은 웹 서버에서 간단한 그래픽을 끌어오고 imagemagick을 사용하여 이미지를 더 사용할 수 있도록 일부 색상을 변경하는 것입니다.

이것은 imagemagick 부분입니다:

convert traffic.png -transparent "rgb(240,240,240)" traffic2.png
convert traffic2.png -fill "rgb(200,200,200)" -opaque black traffic2.png
convert traffic2.png -fill "rgb(200,200,200)" -opaque "rgb(0,200,0)" traffic2.png
convert traffic2.png -fill "rgb(200,200,200)" -opaque "rgb(0,130,0)" traffic2.png
convert traffic2.png -fill "rgb(200,200,200)" -opaque "rgb(150,150,255)" traffic2.png
# convert traffic2.png -fill "rgb(200,200,200)" -opaque "rgb(0,0,255)" traffic2.png

내가 겪고 있는 문제는 현재 주석 처리된 행에 있습니다. 내가 보기에는 파란색의 모든 항목을 지정된 동일한 회색으로 변경하는 것 같지만, 일단 이 줄이 실행되면 이전에 투명했던 배경도 단색이 됩니다. 구문이 동일한 것을 보면 왜 이런 일이 발생하는지 잘 모르겠습니다. 로컬 컴퓨터(OS X)에서 이 명령을 시도하면 제대로 작동하지만 Raspberry Pi의 Debian에서는 뭔가 방해가 되는 것 같습니다.

답변1

귀하의 문제는 귀하의 질문에 대한 의견, 특히 IM 6.6.X와 6.7+ 사이의 변경 사항에서 우리가 논의한 것과 같습니다. 귀하의 명령은 Fedora 14 및 CentOS 5 및 6에서는 작동하지만 Ubuntu 12.10에서는 작동하지 않습니다.

  • F14 (6.6.4-1 2011-11-03 Q16) - 유효
  • CentOS 6(6.5.4-7 2012-05-07 Q16) - 유효함
  • Ubuntu 12.10(6.7.7-10 2012-08-17 Q16)이 작동하지 않습니다.

나는 다음과 같은 제목의 IM 문서에서 이것을 발견했습니다.ImageMagick v6 예 - 색상 기본 사항 및 채널. 이 소개는 "이미지의 색상 바꾸기" 섹션에서 내 관심을 끌었습니다.

그러나 IM v6.2.7부터 이 연산자는 "-channel" 설정으로 제한됩니다. 따라서 색상(예: 파란색)을 투명도로 변환하려면 색상을 투명하게 만드는 알파 채널이 포함된 "채널"을 지정해야 합니다. 또한 투명도 정보를 보존하려면 이미지에 마스크 또는 알파 채널이 활성화되어 있는지 확인해야 합니다.

이 새로운 정보를 사용하여 여섯 번째 명령을 다음과 같이 변환했습니다.

$ convert traffic2.png -transparent "rgb(0,0,255)" traffic2.png

이것이 효과가 있었던 것 같습니다. OP는 이것이 그의 문제를 해결했음을 확인했습니다!

이전 명령

         액세스할 수 없는 ss2.png

새 명령

         교통 좋음 ss2.png

관련 정보