无论如何,我可以使用rmagick检测图像中的透明像素吗?

时间:2019-03-12 06:27:23

标签: ruby-on-rails ruby imagemagick rmagick

我正在使用Rmagick为iOS生成图标。为此,我需要删除透明度。现在,我将停用Alpha通道并展平所有图像。这是我用于此的代码。

app_store_icon = ImageList.new(app_store_icon_url)
app_store_icon.alpha(DeactivateAlphaChannel)
app_store_icon.flatten_images

但是,如果用户上传没有透明度的正确png图像,我想避免不必要的步骤。那么如何检查图像中是否有透明性,并且仅在需要时执行上述步骤?

1 个答案:

答案 0 :(得分:0)

在Imagemagick命令行中,提取Alpha通道并测试其平均值是否小于1。如果是,则它具有透明度。如果为1,则没有透明度。

value=$(convert image -alpha extract -format "%[fx:mean]" info:)

or

value=$(convert image -alpha extract -scale 1x1! -format "%[fx:u]" info:)

if [ "$value" = 1 ]; then
echo "opaque"
else
echo "transparent"
fi

对不起,我不认识RMagick。