是否可以检查PNG图像是否具有透明背景?

问题描述 投票:3回答:3

我正在对图像使用裁切和调整大小功能,但是我只需要让其裁切/调整仅具有透明背景的png文件,图像中至少应有1像素对图像才可以被接受。

是否可以检查PNG图像是否具有透明的背景/像素?

我正在使用PHP和GD库。

编辑:好的,我已经弄清楚了如何使用GD库在PHP上执行此操作。看它看起来有多干净! :)

<?php

$im = imagecreatefrompng("php.png");
$rgba = imagecolorat($im,1,1);
$alpha = ($rgba & 0x7F000000) >> 24;

var_dump($alpha);
?>

任何想法如何为x / y做一个数组以协调检查所有寻找至少1个像素的图像像素= $ alpha = 127?

resize png transparent crop
3个回答
1
投票

您当然可以遍历所有像素,并检查它们是否具有不为255的Alpha。您使用的是哪种语言和库?


0
投票

您可以为此打电话给imagemagick:

https://www.imagemagick.org/discourse-server/viewtopic.php?t=18596

转换my_image.png-格式“%[不透明]”信息:

False


0
投票

在Imagemagick中处理此问题的一种方法是检查alpha通道的平均值。如果为1,则它是不透明的。否则,alpha通道在某些地方或部分透明度会有些透明。

convert logo: -channel a -separate -format "%[fx:mean]" info:
1

convert logo: -transparent white -format "%[fx:mean]" info:
0.894907

所以你可以做:

convert image -format "%[fx:mean==1?1:0]" info:

如果返回值为1,则它是完全不透明的。如果返回值为0,那么某处会有一些透明性。

© www.soinside.com 2019 - 2024. All rights reserved.