imagepng не работает, он создает пустое изображение и изображение не сжимается

Я создаю эскиз myImage различного формата (jpg, png), Вот мой код

<?php
error_reporting(E_ALL);
//$file = 'H:/xampp/htdocs/myfolder/new.jpg';
$file = 'H:/xampp/htdocs/myfolder/phool.png';
$pathToSave = 'H:/xampp/myfolder/New/';
$sourceWidth =60;
$sourceHeight = 60;
$what = getimagesize($file);
$file_name = basename($file);
//print "MIME ".$what['mime'];
switch(strtolower($what['mime']))
{
case 'image/png':
$img = imagecreatefrompng($file);
$img = imagecreatefromstring($img);
$new = imagecreatetruecolor($what[0],$what[1]);
imagecopy($new,$img,0,0,0,0,$what[0],$what[1]);
header('Content-Type: image/png');
imagepng($new,$pathToSave.$file_name);
imagedestroy($new);
break;
case 'image/jpeg':
$img = imagecreatefromjpeg($file);
$new = imagecreatetruecolor($what[0],$what[1]);
imagecopy($new,$img,0,0,0,0,$what[0],$what[1]);
header('Content-Type: image/jpeg');
imagejpeg($new,$pathToSave.$file_name);
imagedestroy($new);
break;
case 'image/gif':
$img = imagecreatefromgif($file);
break;
default: die();
}

Но, это не работает для изображений PNG. Это сохраняет пустое изображение в моем назначении $pathToSave = 'H:/xampp/htdocs/myfolder/New/',

Если я удалю $img = imagecreatefromstring($img); затем imagepng сохраняет изображение как есть, но не сжимает изображение как imagejpg делает.

2

Решение

$img = imagecreatefrompng($file); //Creates an image from a png file
$img = imagecreatefromstring($img); //Creates an image from a string

Обычно вы создаете изображение в памяти, используя imagecreatefrompng ($ file), но затем перезаписываете ту же переменную, используя imagecreatefromstring ($ img), которая не принимает переменную GDImage в качестве параметра, поэтому возвращает пустое изображение (или ноль?).

Просто удалите imagecreatefromstring ($ img); и это будет работать.

$newImage = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefrompng($fileurl);
imagecopyresized($newImage, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagepng($newImage,$fileurl);
imagedestroy($newImage);
imagedestroy($source);
1

Другие решения

попробуйте это, это работает для меня

$img  = imagecreatefrompng( $file);
$new  = imagecreatetruecolor( $what[0],$what[1]);
imagecopyresampled( $new, $img, 0,0,0,0,$what[0],$what[1] );

ссылка для imagecopyresampled

0

По вопросам рекламы [email protected]