为了账号安全,请及时绑定邮箱和手机立即绑定

Imagemagick(转换)控制台与 php Imagick - 不同的结果

Imagemagick(转换)控制台与 php Imagick - 不同的结果

PHP
森林海 2022-07-02 15:42:00
当我这样做时convert 1.png 1.jpg- 我从 png 中删除了透明并在 jpg 中看到了真实的背景,但是当我在 php Imagick 中做同样的事情时:    $piece = new Imagick("1.png");    $piece->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN);    $piece->setImageFormat('jpg'); // How to refresh content of $piece w/o save to disk?    $piece->writeImage('image.jpg'); // it works as I need - when reopen saved image我得到的只是白色背景,在第一张图片上是透明的(但在第一张图片上是透明的)。如何使用 Imagick 获得相同的结果?
查看完整描述

1 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

您正在执行两种不同类型的处理。

JPG 不支持透明度。所以你的转换命令只是读取 PNG 输入并保存到 JPG 输出。具有透明度的 Alpha 通道被简单地移除,显示任何图像或颜色数据位于 Alpha 通道的透明部分下方。

在您的 Imagick 代码中,您将 Alpha 通道与默认的白色背景进行了展平。这会在 alpha 通道透明的地方放置白色,然后保存为 JPG。

如果您想要在您的转换命令中使用相同的白色,那么请执行convert image.png -flatten image.jpg. 如果您希望您的 Imagick 执行与转换相同的操作,请移除展平。读取 input.png 图像并简单地保存为 JPG。


查看完整回答
反对 回复 2022-07-02
  • 1 回答
  • 0 关注
  • 117 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号