Base64編碼是嚴格用於將數據轉換爲文本格式運輸的編碼格式。無論編碼格式如何,如果您需要其他格式,都需要進一步轉換。所以如果你想PNG是一個JPEG,在Base64解碼之後它需要被另一個工具轉換成JPEG。 This thread有一些很好的建議。回答線程的@Andrew Moore建議使用這樣的函數。一定要有GD庫安裝了您的PHP設置的一部分:
// 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);
}
因此,使用你的代碼作爲一個例子,那麼您需要使用此功能來做到以下幾點:
png2jpg('myDirectory/filename.png','myDirectory/filename.jpg', 100);
或者你可以解構是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);
JPEG和PNG之間的差別不只是擴展,它是一個完全不同的編碼 –
我知道,任何知道該怎麼做,不同的編碼? –
http://stackoverflow.com/questions/1201798/use-php-to-convert-png-to-jpg-with-compression或http://stackoverflow.com/questions/8550015/convert-jpg-gif-to -png功能於PHP? –