Как проверить прозрачность изображения, используя Imagick в PHP

Первое, что вы можете подумать, чтобы проверить, прозрачно ли изображение или нет, это проверить формат файла. Форматы растровых файлов, поддерживающие прозрачность, — это GIF, PNG, BMP, TIFF и JPEG 2000 через прозрачный цвет или альфа-канал. Но так же, как у них может быть прозрачность, у них может быть и нет. Поэтому метод проверки с помощью формата изображения не достаточно, чтобы проверить, что вам нужно.

В этой статье мы покажем вам, как правильно проверить, прозрачно ли изображение или нет с помощью Imagick в PHP.

Проверить прозрачность

Чтобы проверить, имеет ли изображение прозрачность или нет, вы можете использовать getImageAlphaChannel метод Имагика. Этот метод возвращает целое число, идентифицированное как константа цветового пространства изображения (проверьте константы цветового пространства изображения для получения дополнительной информации).

Для нас интересна константа Undefined Colorspace, которая означает, что изображение не имеет прозрачности. Эта константа имеет значение 0, если изображение не имеет прозрачности, поэтому вы можете легко проверить это с помощью оператора if:

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 :(";
}

Если вы хотите проверить прозрачность с помощью константы, вы можете сделать это легко:

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 !";
}

Если результат альфа-канала не равен 0 или 1, тогда у изображения есть другое цветовое пространство, которое вы можете идентифицировать с помощью следующего прорыва:

Constants:
0 - UndefinedColorspace
1 - RGBColorspace
2 - GRAYColorspace
3 - TransparentColorspace
4 - OHTAColorspace
5 - LABColorspace
6 - XYZColorspace
7 - YCbCrColorspace
8 - YCCColorspace
9 - YIQColorspace
10 - YPbPrColorspace
11 - YUVColorspace
12 - CMYKColorspace
13 - sRGBColorspace
14 - HSBColorspace
15 - HSLColorspace
16 - HWBColorspace
Ссылка на основную публикацию
Adblock
detector