2013-01-25 2 views
4

JPG로 디코드하려는이 Base64 PNG가 있습니다.Base64 PNG를 JPG 이미지로 변환하는 방법은 무엇입니까?

list($type, $data) = explode(';', $data); 
list(, $data)  = explode(',', $data); 
$data = base64_decode($data); 
file_put_contents('myDirectory/filename.png', $data); 

을하지만 JPG로 저장하려고하면, 그것은 흑백 (MyDirectory/filename.jpg)를 사용에서 오는 : 나는 PNG로 변환하는 경우 사용하여, 잘 작동합니다.

어떻게 JPG로 변환하나요? 여기 내 Base64로 PNG의 예입니다

data:image/png;base64,iVBORw0KGgoAAAANSUhE... 
+0

JPEG 및 PNG의 차이뿐만 아니라 확장, 그것은 완전히 다른 인코딩 –

+0

내가 아는 그 다른 인코딩을 수행하는 방법 어떤 생각인가? –

+0

http://stackoverflow.com/questions/1201798/use-php-to-convert-png-to-jpg-with-compression 또는 http://stackoverflow.com/questions/8550015/convert-jpg-gif-to -png-in-php? –

답변

8

Base64로 엄격하게 텍스트 전송 가능한 형식으로 데이터를 변환하는 데 사용되는 인코딩 형식입니다. 다른 형식을 원하면 인코딩 형식이 무엇이든 더 변환해야합니다. 따라서 PNG를 JPEG로 만들려면 Base64 디코딩 후에 다른 도구로 JPEG로 변환해야합니다. This thread 좋은 제안이 있습니다. 스레드에게 답변하는 @Andrew Moore는 이와 같은 기능을 사용하도록 권장합니다.

png2jpg('myDirectory/filename.png','myDirectory/filename.jpg', 100); 

또는 :

// Quality is a number between 0 (best compression) and 100 (best quality) 
function png2jpg($originalFile, $outputFile, $quality) { 
    $image = imagecreatefrompng($originalFile); 
    imagejpeg($image, $outputFile, $quality); 
    imagedestroy($image); 
} 

그래서 예를 들어 코드를 사용하여, 당신은 다음을 수행하기 위해이 기능을 사용합니다 : GD 라이브러리가 PHP 설치의 일부로 설치해야합니다 그 png2jpg 기능의 기능을 해체하고 다음과 같이 코드에서 사용할 수 있습니다 :

list($type, $data) = explode(';', $data); 
list(, $data)  = explode(',', $data); 
$data = base64_decode($data); 
file_put_contents('myDirectory/filename.png', $data); 
$image = imagecreatefrompng('myDirectory/filename.png'); 
imagejpeg($image, 'myDirectory/filename.jpg', 100); 
imagedestroy($image); 
5

PHP 5.2.0부터 이것에 가장 쉬운 방법은 data:// 래퍼를 사용하고, 많은 기능의 파일처럼 사용할 수 있습니다.

$image = 'data:image/png;base64,iVBORw0KGgoAAAANSUhE...'; 
$image = imagecreatefrompng($image); 
imagejpeg($image, 'myDirectory/filename.jpg', 100); 
imagedestroy($image); 
관련 문제