php png失真的原因及解决办法

在本篇文章里小编给大家整理的是一篇关于php png失真的原因及解决办法,有需要的朋友们可以跟着学习参考下。

1、创建一个PHP示例文件。

2、创建一个和背景图片一样大小的真彩色画布。

3、复制背景图片。

4、通过“imagecreatefrompng”合成png图片即可。

实例

<?php
    ob_clean();
    $bg = "image1.png";
    $image_1 = imagecreatefrompng($bg);
    $bgx = imagesx($image_1);
    $bgy = imagesy($image_1);
    //创建一个和背景图片一样大小的真彩色画布(ps:只有这样才能保证后面copy图片的时候不会失真)
    $bgimage = imageCreatetruecolor($bgx,$bgy);
    imagesavealpha($bgimage, true);//保持透明
    imagealphablending($bgimage, true);//混色模式
    $alpha = imagecolorallocatealpha($bgimage, 0, 0, 0, 127);//透明
    imagefill($bgimage, 0, 0, $alpha);
    //copy背景图片
    imagecopyresampled($bgimage,$image_1,0,0,0,0,$bgx,$bgy,$bgx,$bgy);
    $fontColor = imagecolorallocate($bgimage,0x33,0x33,0x33);
    $image_2 = imagecreatefrompng( "image2.png");
    //合成图片2
    imagecopyresampled($bgimage, $image_2, 100, 100, 0, 0, 40, 40, imagesx($image_2) , imagesy($image_2));
    //文字
    $textLen = mb_strlen($text1);
    $fontSize  = 20;
    $fontWidth = imagefontwidth($fontSize)*3;//不知为什么,实测如此
    $textWidth = $fontWidth * mb_strlen($text1);
    $textx = ceil ( ($bgx - $textWidth) / 2 );
    imageTTFText($bgimage, $fontSize, 0, $textx, 450, $fontColor, $font , $text1);
    $result = imagepng($bgimage,"newimage.png");
    imagedestroy($bgimage);
    imagedestroy($qrcode);

更多相关解决方法

PHP解决合并图片失真问题

$ni = imagecreatetruecolor($toW,$toH); //创建真彩色图片
$bg_x = (($toW-$ftoW)/2);
$bg_y = (($toH-$ftoH)/2);
$color=imagecolorallocate($ni,255,255,255); //创建颜色
imagefill($ni, 0, 0, $color); //设置白底
imagecopy($ni,$tm,$bg_x,$bg_y,0,0,$ftoW,$ftoH); //合并图片
imagedestroy($tm);

到此这篇关于php png失真的原因及解决办法的文章就介绍到这了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 当使用GDI加载PNG图片时,有时会发生图片失真的情况。这通常是由于PNG图片中包含了透明度信息,而GDI在处理透明度时出现了问题导致的。 具体来说,PNG图片格式支持alpha通道,用于控制图像的透明度。而GDI在处理PNG图片时,只能处理RGB通道,无法处理alpha通道信息。当PNG图片中存在alpha通道时,GDI会将alpha通道信息丢失,只保留RGB通道信息,因而导致了图片失真。 为了解决这个问题,可以使用其他方式加载PNG图片,比如使用第三方或者使用GDI+。其中,GDI+是Microsoft开发的一种图形处理API,支持PNG图片的读取和处理,可以有效地解决PNG图片失真问题。 总之,PNG图片失真问题主要是由于GDI无法处理PNG图片透明度信息所导致的。使用第三方或者GDI+可以有效地解决这个问题。 ### 回答2: GDI矢量图像和PNG位图有着不同的特点。GDI矢量图像是由数学公式生成的,精度高,可以无限放大而不失真;而PNG位图则是由像素点组成的,当放大图片时会出现锯齿和失真。所以,如果将一个PNG图片放大,在没有适当的滤波算法和图像处理技术的情况下,就会导致图片的失真。为了避免PNG图片的失真,我们可以按照目标尺寸重新制作一张高分辨率的图片,或者使用专业的图像处理软件对图片进行处理和压缩,以便在放大时保持图片质量。此外,还可以采用一些防止PNG图片失真的技巧,如在导出PNG图片时使用抗锯齿的选项,或者使用无损压缩来减小图片文件的大小。总之,PNG图片失真问题可以通过改善图片的质量、使用专业的图像处理软件和优化导出设置等手段来解决

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值