Когда я загружаю изображение с белым фоном, я могу изменить цвет белого на прозрачный, что приводит к изображению с прозрачным фоном.После этого первого шага я хочу обрезать прозрачное изображение, но затем оно потеряет прозрачность.
После этого я сначала попытался обрезать изображение и сделать обрезанное изображение его фоном, прозрачным, как я делал ранее с исходным изображением.,С исходным изображением оно работало нормально, но тот же метод не работает для обрезанного изображения.
header('Content-Type: image/png');
// Image resource
$image = imagecreatefrompng("/var/www/html".$_GET["image"]);
// STEP 1 Make background transparant
$white = imagecolorexact($image, 255, 255, 255);
imagecolortransparent($image, $white);
// STEP 2 Crop the image
$image = imagecrop($image, ['x' => 15, 'y' => 49, 'width' => 382, 'height' => 382]);
// Serve the image
imagepng($image);
imagedestroy($image);
Перед кадрированием изображение является прозрачным, но не обрезанным, после кадрирования изображение изменяется, но прозрачность теряется,Переключение первого и второго шага не имеет никакого смысла.
Я также попытался повторно скопировать imagecopy вместо imagecrop с теми же результатами.Также переключил шаги безрезультатно.
header('Content-Type: image/png');
// Image resources
$image = imagecreatefrompng("/var/www/html".$_GET["image"]);
$new = imagecreatetruecolor(382, 382);
// STEP 1 Make background transparant
$white = imagecolorexact($image, 255, 255, 255);
imagecolortransparent($image, $white);
// STEP 2 Crop the image
imagecolortransparent($new, imagecolorallocatealpha($new, 255, 255, 255, 127));
imagealphablending($new, false);
imagesavealpha($new, true);
imagecopyresampled($new, $image, 0, 0, 15, 49, 382, 382, 382, 382);
// Serve the image
imagepng($new);
imagedestroy($new);
Почему это не работает так, как я ожидал?