我目前正在尝试使用GD函数处理图片和PHP。现在我想修改PNG图片的大小。以下是我想调整大小的PNG示例:
虚线表示PNG的边框,背景为透明,在一个大空间中只有一个丢失的星星。我想裁剪这个星星,获得一个简单的星星正方形(即使新的背景变成空白,也没有关系)。
我应该如何高效地做到这样?我考虑循环检查图片的每个像素..试图找到图像所在的位置,最终基于最小x/最大X和最小y/最大y值进行裁剪,但如果我开始处理数百张图片,这将非常耗时。
编辑:
![enter image description here](https://istack.dev59.com/528NX.webp)
我应该如何高效地做到这样?我考虑循环检查图片的每个像素..试图找到图像所在的位置,最终基于最小x/最大X和最小y/最大y值进行裁剪,但如果我开始处理数百张图片,这将非常耗时。
编辑:
<?php
$file = "./crop.png";
$ext = pathinfo($file, PATHINFO_EXTENSION);
$image;
switch ($ext){
case 'png':
$image = imagecreatefrompng($file);
break;
case 'jpeg':
case 'jpg':
$image = imagecreatefromjpeg($file);
break;
case 'gif':
$image = imagecreatefromgif($file);
break;
}
$cropped = imagecropauto($image, IMG_CROP_DEFAULT);
if ($cropped !== false) { // in case a new image resource was returned
echo "=> Cropping needed\n";
imagedestroy($image); // we destroy the original image
$image = $cropped; // and assign the cropped image to $im
}
imagepng($image, "./cropped.png");
imagedestroy($image);