Как изменить изображение PNG через скрипт? - PullRequest
2 голосов
/ 11 июля 2011

У меня есть прозрачное PNG-изображение, которое я хотел бы сделать копию, а затем обрезать до прозрачного изображения 1x1.

Я застрял на части "обрезать прозрачное изображение 1x1".

Я могу либо изменить существующее изображение, либо создать новое изображение и перезаписать существующее. Я считаю, что оба варианта будут работать. Я просто не знаю, как это сделать, и получаю прозрачное изображение в формате png размером 1x1 пикселя.

Любая помощь высоко ценится.

function convertImage(){
    $file1 = "../myfolder/image.png";
    $file2 = "../myfolder/image-previous.png";

    if (!file_exists($file2)) 
        {
        //make a copy of image.png and name the resulting file image-previous.png
        imagecopy($file2, $file1);

        // convert image.png to a 1x1 pixel transparent png 
        // OR 
        // create a new 1x1 transparent png and overwrite image.png with it
        ???

        }
}

1 Ответ

2 голосов
/ 11 июля 2011

Используйте метод imagecopyresized, который есть у вас в PHP.

Больше информации о imagecopyresized

Пример:

$image_stats = GetImageSize("/picture/$photo_filename");    
$imagewidth = $image_stats[0];    
$imageheight = $image_stats[1];    
$img_type = $image_stats[2];    
$new_w = $cfg_thumb_width;    
$ratio = ($imagewidth / $cfg_thumb_width);    
$new_h = round($imageheight / $ratio);

// if this is a jpeg, resize as a jpeg
if ($img_type=="2") {    
    $src_img = imagecreatefromjpeg("/picture/$photo_filename");    
    $dst_img = imagecreate($new_w,$new_h);    
    imagecopyresized($dst_img,$src_img,0,0,0,0,$new_w,$new_h,imagesx($src_img),imagesy($src_img));

    imagejpeg($dst_img, "/picture/$photo_filename");
}
// if image is a png, copy it as a png
else if ($img_type=="3") {
    $dst_img=ImageCreate($new_w,$new_h);
    $src_img=ImageCreateFrompng("/picture/$photo_filename");
    imagecopyresized($dst_img,$src_img,0,0,0,0,$new_w,$new_h,ImageSX($src_img),ImageSY($src_img));

    imagepng($dst_img, "/picture/$photo_filename");
}
else ...
...