Когда я пытаюсь обрезать область прозрачности изображения, его размер будет иметь первоначальный размер, а области прозрачности становятся черными.Как использовать imagecropauto() с IMG_CROP_TRANSPARENT?
Если я запускаю этот код:
<?php
// Create a 300x300px transparant image with a 100px wide red circle in the middle
$i = imagecreatetruecolor(300, 300);
imagealphablending($i, FALSE);
imagesavealpha($i, TRUE);
$transparant = imagecolorallocatealpha($i, 0xDD, 0xDD, 0xDD, 0x7F);
imagefill($i, 0, 0, $transparant);
$red = imagecolorallocate($i, 0xFF, 0x0, 0x0);
imagefilledellipse($i, 150, 150, 100, 100, $red);
imagepng($i, "red_300.png");
// Crop away transparant parts and save
$i2 = imagecropauto($i, IMG_CROP_TRANSPARENT);
imagepng($i2, "red_crop_trans.png");
imagedestroy($i2);
// Crop away bg-color parts and save
$i2 = imagecropauto($i, IMG_CROP_SIDES);
imagepng($i2, "red_crop_sides.png");
imagedestroy($i2);
// clean up org image
imagedestroy($i);
Я в конечном итоге с red_crop_trans.png
изображением, которое является 300x300px
черное изображение с 100x100px
красным кружком в нем. И красный_crop_sides.png, который представляет собой черный номер 100x100px
с красным кругом в нем 100x100px
.
Почему red_crop_trans.png не обрезано до 100x100px
? и почему фон обоих изображений черный? И как мне обрезать их, сохраняя прозрачность?
опробован на Ubuntu 16.10, с PHP 7.0.8-3ubuntu3 , и GD-библиотека. Версия 2.2.1 –