【问题标题】:Save PSD layer as PNG/JPG with Imagick depending on transparency根据透明度,使用 Imagick 将 PSD 图层保存为 PNG/JPG
【发布时间】:2014-01-29 08:52:50
【问题描述】:

我有一个脚本,它使用 Imagick 从 .PSD 文件中提取图层并将它们保存为 .PNG 文件。问题是即使对于没有透明度的图层,PNG 也会被保存,这意味着文件大小会增加。我希望将这些文件保存为 JPEG。

Imagick 能否判断 PSD 文件中的图层是否具有透明度?

【问题讨论】:

    标签: php imagemagick imagick


    【解决方案1】:

    如果您想检测源图像中是否有 Alpha 通道,您可以调用 $imagick->getImageAlphaChannel()

    如果您想测试 alpha 通道是否真的修改了图像,即包含不完全不透明的内容,您可以调用$image->getImageChannelStatistics();。其中的值可能仅在图像具有 Alpha 通道时才有效

    例如具有影响图像的 alpha 的图像具有以下 alpha 值。

    [8] => Array ( 
        [mean] => 46867.721934066 
        [minima] => 0 
        [maxima] => 65535 
        [standardDeviation] => 26491.889090216 
        [depth] => 16 
    ) 
    

    不使用透明度的图像具有值

    [8] => Array ( 
    
        [mean] => 0 
        [minima] => 3.3999999521444E+38 
        [maxima] => -3.3999999521444E+38 
        [standardDeviation] => 0 
        [depth] => 1 
    ) 
    

    这似乎是假的。

    所以只有一个 alpha 通道的图像,并且不具有 1(或者更确切地说是 Qunatum 值,即可能 2 ^^ 16)作为 alpha 通道统计数据的平均值和 0 的标准偏差,需要使用 Alpha 通道保存。

    【讨论】:

      【解决方案2】:

      保存PNG后,好像在运行

      identify -format '%[channels]' filename.png
      

      有效地返回 srgb / srgba。所以我会用它来保存为PNG,然后如果值为srgb,则转换为JPEG。

      【讨论】:

        猜你喜欢
        • 2012-09-13
        • 1970-01-01
        • 2015-06-17
        • 2015-06-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多