2012-02-04 37 views
0

我在構建一個應用程序,它使用Ruby + RMagick將PNG圖像合成到各種JPEG背景上。一切正常,,但我們發現一個特定的JPEG背景,PNG被合成爲黑點。 PNG透明度得到尊重; 「斑點」的形狀是正確的,但顏色正在消失並變黑。在JPEG上合成PNG失敗(顏色全部呈現爲黑色)僅在一個特定的JPEG文件上

我已經嘗試了很多JPEG來試圖找到另一個產生相同結果,但(迄今)失敗。

我懷疑它可能與JPEG文件的位深度或其他參數有關。我一直在尋找互聯網,尋找一種可以分析這個JPEG的工具,告訴我所有可能相關的參數,但還沒有發現任何東西。

  1. 有沒有類似這樣的事情發生在你身上?原因是什麼?
  2. 根據您對JPEG格式的瞭解,是否還有其他可能相關的參數?
  3. 你知道任何可以分析JPEG文件的工具,並告訴我位深度和其他參數嗎?或者,如果我在十六進制編輯器中打開JPEG,你能告訴我如何找到這些信息嗎?

回答

0

我還沒有發現有什麼特別之處是一個JPG其中複合操作不正確的工作,但我使用此代碼工作圍繞它:

back = Magick::Image.from_blob(jpg_data).first 
png = Magick::Image.from_blob(png_data).first 
page1 = Magick::Image.new(back.columns, back.rows) 
page1.composite!(back, 0, 0, Magick::OverCompositeOp) 
page1.composite!(png, png_x, png_y, Magick::OverCompositeOp) 

而不是:

back = Magick::Image.from_blob(jpg_data).first 
png = Magick::Image.from_blob(png_data).first 
page1 = back.composite(png, png_x, png_y, Magick::OverCompositeOp) 
+0

我相信有問題的JPG可能使用了RGB不同的顏色模型。 – 2012-08-29 21:18:16