2012-10-27 1 views
0

Ruby RMagick을 사용하여 PNG를 JPG로 변환하는 다음 코드는 변환 된 이미지에 항상 테두리가 있습니다. 어쨌든 그것을 피하기 위해?Ruby RMagick 형식 변환은 항상 경계를 남깁니다.

  • 맥 OS X 10.8.2
  • 루비 1.9.3p286 (2012년 10월 12일 개정 37,165) x86_64에-darwin12]
  • rmagick (2.13.1)
  • MacPorts의 2.1.2
  • ImageMagick이 @ 6.8.0-2_0 + Q8 + (활성) WMF는 여기

은 IRB 내 코드입니다 :

irb(main):013:0* image = Magick::Image.read('term.png').first 
=> term.png PNG 684x716 684x716+0+0 DirectClass 8-bit 48kb 
irb(main):014:0> image.format = "JPG" 
=> "JPG" 
irb(main):015:0> image.write 'term.jpg' 
=> term.png=>term.jpg JPG 684x716 684x716+0+0 DirectClass 8-bit 16kb 
01 23,516,

여기 이미지입니다 이전과 이후 :

  • BEFOE :

enter image description here

  • AFTER :

enter image description here

답변

0

JPG 파일에는 알파 채널이 없으므로 투명하거나 반투명 한 픽셀을 포함 할 수 없습니다. 테두리는 그냥 검은 페이드 경계선에 지나지 않으며, 파일 전환에 의해 불투명하게됩니다.

2

원본 PNG 이미지에는 투명도 채널 (창 주위에 투명 테두리가 있음)이 있습니다. Jpg 이미지는 투명도를 지원하지 않습니다. 따라서 ImageMagick은 jpg로 변환 할 때 투명성에 뭔가를해야합니다. 귀하의 경우에는 알파 채널을 검은 색으로 변환합니다.

i = Magick::ImageList.new 
i.read('term.png') 
i.new_image(i.first.columns, i.first.rows) { self.background_color = "white" } 
i = i.reverse.flatten_images 
i.format = "JPG" 
i.write('term.jpg') 

이 흰색 배경에 합성 이미지를 만듭니다

는이 같은 일을 할 수있는 기본 배경 색상을 변경합니다. 그런 다음 컴포지션을 평평하게하고 (두 개의 이미지를 결합 : 흰색 배경 + 원본 이미지) jpg로 씁니다.

+0

감사합니다. RMagic을 사용하여 이것을 제거하는 명령이 있습니까? 감사! –