前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP将png透明背景图片转换为白色背景

PHP将png透明背景图片转换为白色背景

作者头像
Petrochor
发布2022-06-07 16:01:43
8250
发布2022-06-07 16:01:43
举报
文章被收录于专栏:Stephen

前一篇文章中,刚介绍了如何读取PDF文件并转换为png图片,最终图片能正常生成,但遇到了一个问题,生成的图片背景是透明的,那么如何将透明的图片转换为白色背景呢?

找了很多 Imagick 提供的方法都没有成功,包括 setBackgroundImage()setImageBackgroundImage()mergeImageLayers(\Imagick::LAYERMETHOD_FLATTEN) 等等,生成为 jpg 图片背景是黑色的,所以最终我放弃了使用 Imagick 库的方法

解决方法

代码语言:javascript
复制
// 由文件或 URL 创建一个新图象
$image = imagecreatefrompng($file);

// 图片尺寸
$imageWidth = imagesx($image);
$imageHeight = imagesy($image);

// 创建真彩图像资源
$newImage = imagecreatetruecolor($imageWidth, $imageHeight);

// bool imagefilledrectangle ( resource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $color )
// 在 image 图像中画一个用 color 颜色填充了的矩形,其左上角坐标为 x1,y1,右下角坐标为 x2,y2。0, 0 是图像的最左上角。
imagefilledrectangle(
    $newImage, 
    0, 
    0, 
    $imageWidth, 
    $imageHeight, 
    imagecolorallocate($newImage, 255, 255, 255)
);

// 重采样拷贝部分图像并调整大小
imagecopyresampled($newImage, $image, 0, 0, 0, 0, $imageWidth, $imageHeight, $imageWidth, $imageHeight);

// 保存并覆盖图片
imagepng($newImage, $file);

虽然问题解决了,但我不认为这是一个很好的解决办法,如果有更好的方案,还请不吝赐教。 如果能在pdf转png时实现,就更完美了

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/07/01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 解决方法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档