2014-10-09 4 views
2

다양한 형식의 인 myImage의 축소판을 만듭니다. 여기에 PNG images.It 내 목적지 $pathToSave = 'H:/xampp/htdocs/myfolder/New/'에 빈 이미지를 저장하는 것은 작동하지 않는, 내 코드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(); 
} 

입니다하지만.

$img = imagecreatefromstring($img);을 제거하면 이미지가 그대로 저장되지만 imagejpg은 이미지를 압축하지 않습니다.

+0

는'$의 IMG = imagecreatefromstring ($ img와)없이 시도,' –

+0

잘 관찰하지만 난 그냥 원본 이미지를 저장 것을 제거하는 경우, 그것은 당신이 원본 이미지를 무엇을 의미하는지 여기 – Hitesh

+0

을 압축하지 않습니다? 당신의 파일'phool.png'은 같은 이미지 일 수 있습니다. –

답변

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

Basicly 당신이 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