Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将Base64 PNG转换为JPG图像?_Php_Image_Png_Base64_Jpeg - Fatal编程技术网

Php 如何将Base64 PNG转换为JPG图像?

Php 如何将Base64 PNG转换为JPG图像?,php,image,png,base64,jpeg,Php,Image,Png,Base64,Jpeg,我有这个Base64 PNG,我想解码成JPG。如果我将其转换为PNG,则可以使用: list($type, $data) = explode(';', $data); list(, $data) = explode(',', $data); $data = base64_decode($data); file_put_contents('myDirectory/filename.png', $data); 但如果我尝试将其保存为JPG,它将使用(MyDirectory/filena

我有这个Base64 PNG,我想解码成JPG。如果我将其转换为PNG,则可以使用:

list($type, $data) = explode(';', $data);
list(, $data)      = explode(',', $data);
$data = base64_decode($data);
file_put_contents('myDirectory/filename.png', $data);
但如果我尝试将其保存为JPG,它将使用(
MyDirectory/filename.JPG
)以黑白显示

如何将其转换为JPG?以下是我的Base64 PNG示例:

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

Base64是一种编码格式,严格用于将数据转换为文本可传输格式。如果需要其他格式,则需要进一步转换该编码格式中的任何内容。因此,如果您希望PNG是JPEG,则在Base64解码后,需要使用其他工具将其转换为JPEG。我有一些好的建议@Andrew Moore回答了这个问题,他建议使用这样的函数。确保在PHP设置中安装GD库:

// 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);

自PHP5.2.0以来,实现这一点的最简单方法是使用包装器,您可以像在许多函数中使用文件一样使用它

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

jpeg和png之间的区别不仅仅是扩展,它是一种完全不同的编码我知道,你知道如何进行不同的编码吗?或