使用 ImageMagick 和 PHP 将 PNG 转换为 JPG 并将透明背景设置为白色

发布于 2024-10-21 17:25:20 字数 65 浏览 5 评论 0原文

将图像从 PNG 转换为 JPEG 时,如何使用 ImageMagick(带有 php 扩展)将透明背景设置为白色?

How can I use ImageMagick (with the php extension) to set the transparent background to white when converting an image from PNG to JPEG?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我要还你自由 2024-10-28 17:25:20

在撰写本文时,您尚未指定正在使用哪个扩展,但如果您使用的是命令行,则命令将为:

convert image.png -background white -flatten -alpha off image.jpg

更多信息可以在 屏蔽使用文档

例如,使用 IMagick,我认为您可以按如下方式执行此操作:

(完全未经测试,从未使用过 IMagick,也没有安装它来测试)

$image = new IMagick('image.png');

$flattened = new IMagick();
$flattened->newImage($image->getImageWidth(), $image->getImageHeight(), new ImagickPixel("white"));

$flattened->compositeImage($image, imagick::COMPOSITE_OVER, 0, 0);

$flattened->setImageFormat("jpg");
$flattened->writeImage('image.jpg');

$image->clear();
$image->destroy();
$flattened->clear();
$flattened->destroy();

At time of writing, you have not specified which extension you are using, but if you were using the commandline, the command would be:

convert image.png -background white -flatten -alpha off image.jpg

More information can be found on the Masking Usage documentation.

Using IMagick for instance, I think you could do this as follows:

(totally untested, never used IMagick and don't have it installed to test)

$image = new IMagick('image.png');

$flattened = new IMagick();
$flattened->newImage($image->getImageWidth(), $image->getImageHeight(), new ImagickPixel("white"));

$flattened->compositeImage($image, imagick::COMPOSITE_OVER, 0, 0);

$flattened->setImageFormat("jpg");
$flattened->writeImage('image.jpg');

$image->clear();
$image->destroy();
$flattened->clear();
$flattened->destroy();
荆棘i 2024-10-28 17:25:20

如果您使用 Imagick 扩展:

<?php
// load the source transparent png
$i = new IMagick('image.png');

// set the background to white
// you can also use 'rgb(255,255,255)' in place of 'white'
$i->setImageBackgroundColor(new ImagickPixel('white'));

// flattens multiple layers
$i = $i->flattenImages();

// the output format
$i->setImageFormat('jpg');

// save to disk
$i->writeImage('image.jpg');

// and/or output directly
// header('Content-Type: '.$i->getFormat());
// echo $i->getImageBlob();

// cleanup
$i->clear();
$i->destroy();

If you are using the Imagick extension:

<?php
// load the source transparent png
$i = new IMagick('image.png');

// set the background to white
// you can also use 'rgb(255,255,255)' in place of 'white'
$i->setImageBackgroundColor(new ImagickPixel('white'));

// flattens multiple layers
$i = $i->flattenImages();

// the output format
$i->setImageFormat('jpg');

// save to disk
$i->writeImage('image.jpg');

// and/or output directly
// header('Content-Type: '.$i->getFormat());
// echo $i->getImageBlob();

// cleanup
$i->clear();
$i->destroy();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文