我正在构建一个使用Ruby + RMagick将PNG图像合成到各种JPEG背景上的应用程序。一切正常,但是我们找到了一个特定的JPEG背景,PNG被合成为黑点。 PNG透明度受到尊重; “斑点”的形状是正确的,但颜色正在消失并变黑。
我尝试了很多JPEG试图找到另一个产生相同结果的JPEG,但(到目前为止)都失败了。
我怀疑它可能与相关JPEG文件的位深度或其他参数有关。我一直在网上搜索,寻找一个可以分析这个JPEG的工具,并告诉我所有可能相关的参数,但还没有找到任何参数。
答案 0 :(得分: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)