2013-04-10 2 views
4

컴퓨터에 이미지를 저장하지 않고 .jpg, .jpeg 또는 .gif 이미지를 PHP에서 .png로 변환 할 수 있습니까? 같은 뭔가 : 솔직히 이것에 대한 답을 찾을 수 없습니다.jpg, .jpeg 또는 .gif를 컴퓨터에 저장하지 않고 .png로 변환하십시오.

function read_image($filename, $extension) { 
    switch($extension) { 
     case '.png': 
      $image = imagecreatefrompng($filename); 
      break; 
     case '.jpg': case '.jpeg': 
      $unTransformed = imagecreatefromjpeg($filename); 
      $image = transform($unTransformed); 
      break; 
     case '.gif': 
      $unTransformed = imagecreatefromgif($filename); 
      $image = transform($unTransformed); 
      break; 
     return $image; 
    } 
} 
function transform($unTransformed) { 

    // Some magic here without actually saving the image to your machine when transforming 

    return $transformed; 
} 

. 또한 GD는 필수 사항입니다. PHP 매뉴얼에서 직접

+0

본 적이 있습니까? http://stackoverflow.com/questions/14431363/converting-during-onpload-before-saving-on-server-png-gif-to-jpg –

+0

그것을 저장하고 그냥 당신이 당신의 프로그램에서하고있는 것처럼 그것을 돌려 보내십시오. –

답변

4

출력 버퍼링을 사용하여이 같은 imagepng의 출력이 작동합니다 캡처 : 물론

function transform($unTransformed) { 
    ob_start(); 
    imagepng($unTransformed); 
    $transformed = ob_get_clean(); 
    return $transformed; 
} 

, 이것은 당신이 실제로 이미지 파일의 PNG의 바이트 스트림을 포함하는 변수를 원하는 가정한다. 어쨌든 그것을 출력하는 것이 유일한 목적이라면, 마티 맥브리 (Marty McVry)가 제안한 것처럼 귀찮게하지 마라.

+0

이것은 버그로 보입니다 : S 어쨌든, 나는 그것에 착색을해야합니다. –

2

: 그것은을 가능하게 필요한, 그래서 당신은 따라 헤더를 보내는 데 문제가 발생할 수 있습니다

header('Content-Type: image/png'); 
$transformed = imagepng($untransformed); 

(브라우저 또는 파일 중 하나에 PNG 이미지를 출력 imagepng() α- 함수를) 다른 곳으로 헤더를 출력하거나 imagepng으로 만든 스트림을 base64 문자열로 변환하고 나머지 코드에 따라 이미지를 표시하십시오.

관련 문제