【问题标题】:Imagemagick (convert) console vs php Imagick - different resultsImagemagick(转换)控制台与 php Imagick - 不同的结果
【发布时间】:2020-04-14 04:00:15
【问题描述】:

当我在做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 获得相同的结果?

【问题讨论】:

  • 嗯...您只是在实例化Imagick 对象?有关如何使用它的示例,请参阅the manual
  • 不,接下来我在做 $canvas2->cropimage(268, 150, 0, 0); $jpg = $canvas2->writeImage('image.jpg'); 并在 image.jpg 结果中带有白色背景
  • 请使用所有相关代码编辑您的问题(不要只在 cmets 中发布)。
  • 已更新,现在又一个问题

标签: php imagemagick imagick


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2019-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多