你可能会想验证图像是否具有透明度的第一件事就是验证文件的格式。支持透明的栅格文件格式为GIF, PNG, BMP, TIFF和JPEG 2000, 可通过透明颜色或alpha通道进行。但是, 就像它们可以具有透明度一样, 它们可能也没有。因此, 通过图像格式进行验证的方法不足以验证你需要的内容。
在本文中, 我们将向你展示如何使用PHP中的Imagick正确验证图像是否透明。
验证透明度【如何在PHP中使用Imagick检查图像是否具有透明度】若要检查图像是否具有透明度, 可以使用Imagick的getImageAlphaChannel方法。此方法返回一个整数, 该整数标识为图像的色彩空间常数(有关更多信息, 请检查图像的色彩空间常数)。
对我们来说, 有趣的是Undefined Colorspace常量, 这意味着图像没有透明度。如果图像没有透明度, 则此常量的值为0, 因此可以使用if语句轻松检查它:
<
?php// Create instance of an image$image = new Imagick();
$image->
readImage("your_image.png");
// 0 = No transparency// 1 = Has transparency$hasTransparency = $image->
getImageAlphaChannel();
if($hasTransparency){echo "The image has transparency :)";
}else{echo "The image has no transparency :(";
}
如果要使用常数来验证透明度, 则可以轻松地做到这一点:
<
?php// Create instance of the Watermark image$image = new Imagick();
$image->
readImage("your_image.png");
// 0 = No transparency// 1 = Has transparency$hasTransparency = $image->
getImageAlphaChannel();
if($image->
getImageAlphaChannel() == Imagick::COLORSPACE_UNDEFINED){echo "The image has no transparency :(";
}else{echo "The image has transparency !";
}
如果Alpha通道的结果不是0或1, 则图像具有另一个色彩空间, 你可以通过以下细分来识别该色彩空间:
Constants:0 - UndefinedColorspace1 - RGBColorspace2 - GRAYColorspace3 - TransparentColorspace4 - OHTAColorspace5 - LABColorspace6 - XYZColorspace7 - YCbCrColorspace8 - YCCColorspace9 - YIQColorspace10 - YPbPrColorspace11 - YUVColorspace12 - CMYKColorspace13 - sRGBColorspace14 - HSBColorspace15 - HSLColorspace16 - HWBColorspace
编码愉快!
推荐阅读
- 使用C#在图像上进行隐写术(隐藏信息)入门
- 如何在Symfony 3的Twig视图的Dates上使用time_diff和ago(time ago)函数
- 如何在Twig中有条件地扩展模板或导入宏
- 如何防止XSS攻击并禁止PHP Markdown解析器生成的HTML中的特定标签
- 解决方案错误(名称为”yourtable.tablename”的表已存在)
- 如何在Symfony 3上的控制器(带有或不带有FOSUserBundle)中手动验证(登录)用户
- 如何在WinForms C#中使用LiveCharts库创建地理图表(GeoHeatMap)
- 如何在Microsoft Visual Studio Code中禁用自动补全和智能感知
- 为什么我在android studio中调试时看不到代码()