2014-10-09 1 views
2

Я создаю миниатюру myImage различного формата (jpg, png). Вот мой кодimagepng не работает, он создает пустое изображение и изображение не сжимает

<?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 images.It сохраняет пустое изображение в моем назначении $pathToSave = 'H:/xampp/htdocs/myfolder/New/'.

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

+0

просто попробовать без '$ IMG = imagecreatefromstring ($ IMG);' –

+0

хорошее наблюдение, но если я удалю, что он просто сохраняет исходное изображение, он не сжимает его – Hitesh

+0

здесь то, что вы имеете в виду исходное изображение? ваш файл 'phool.png', поэтому он может совпадать image –

ответ

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

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

Просто снимите 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); 
+0

спасибо за ваш ответ – Hitesh

+0

Можете ли вы попробовать загрузить изображение с более высоким разрешением png и скопировать мой код в свой местный ... и попытаться сделать то, что вы мне объясняете Вот.Я пытаюсь это сделать, но он сохраняет тот же оригинальный образ и не делает его меньшим изображением .... где он работает для 'image/jpeg' – Hitesh

+0

попробуйте это изображение http://upload.wikimedia.org/wikipedia/commons /e/e6/Bosje_bloemen.png – Hitesh

0

попробовать это, он работает со мной

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

reference for imagecopyresampled

+0

это дает мне пустое изображение – Hitesh

Смежные вопросы