【问题标题】:How to minimize and resize PNG images with transparency in php如何在php中最小化和调整具有透明度的PNG图像
【发布时间】:2015-10-04 14:10:02
【问题描述】:

我有 512 * 512 大尺寸透明的 PNG 图片。

如何创建具有较小文件大小的 256 * 256 PNG 图像,同时支持透明度和保持质量。

编辑:我正在使用此代码,但输出图像被裁剪并且不支持透明度。

   $image = imagecreatefrompng("C:\Users\HP\htdocs\icon_hd.png");  // 512 * 512
    $bg = imagecreatetruecolor(256, 256);
    imagefill($bg, 0, 0, 0);
    imagealphablending($bg, TRUE);
    imagecopy($bg, $image, 0, 0, 0, 0, imagesx($image), imagesy($image));
    imagedestroy($image);
    $quality = 100;
    imagepng($bg, "C:\Users\HP\out_icon.png", 9);
    imagedestroy($bg);

【问题讨论】:

  • 你试过 Imagick::thumbnailImage 吗?
  • 通过阅读相关文档:php.net/manual/en/imagick.resizeimage.php
  • 你有没有尝试过或自己做过任何研究?如果您还没有,imagick 可能是您最好的路线。

标签: php png transparency gd


【解决方案1】:

你可以使用ImageMagick

简单示例:

$inFile = "big_img.png";
$outFile = "small_img.png";
$image = new Imagick($inFile);
$image->thumbnailImage(256, 256);
$image->writeImage($outFile);

More info

【讨论】:

    【解决方案2】:

    试试这个,

    $im = new Imagick();
    $im->readImage('myimage.gif');  
    $im->resizeImage(256,256,Imagick::FILTER_LANCZOS,1);
    $im->setImageBackgroundColor('white');
    $im->setImageAlphaChannel(Imagick::ALPHACHANNEL_REMOVE);
    $im->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN);
    $im->writeImage('mythumb.gif');
    $im->clear();
    $im->destroy(); 
    

    【讨论】:

      猜你喜欢
      • 2010-09-21
      • 2011-01-22
      • 1970-01-01
      • 2014-04-14
      • 1970-01-01
      • 1970-01-01
      • 2013-06-03
      • 2013-08-17
      相关资源
      最近更新 更多