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

标签 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/filename.jpg) 以黑白显示。

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

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

最佳答案

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

关于php - 如何将 Base64 PNG 转换为 JPG 图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14514587/

相关文章:

javascript - html2canvas ,将渲染 Canvas 保存为 gif 而不是 png?

php - 非英语不支持来自 $.post jquery codeigniter 的 mysql 查询

PHP5-FPM 静态、动态还是按需?

python - 有没有办法在 PIL 中用黑线勾勒出文本轮廓?

java - 为什么我无法在java和eclipse中读取png图像的rgb值

c++ - libpng 中的内存泄漏?还是我只是愚蠢?

Android(eclipse)PNG透明度显示为黑色(附图片示例)

php - 我如何调试为什么最简单的 MySQL 查询返回 false?

php - Paypal 与 php 中的 socialEngine4.0 集成

html - 使用CSS控制图片下方的文字