透明调整图片PNG的大小 [英] Resize Image PNG With transparence

查看:620
本文介绍了透明调整图片PNG的大小的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在透明plz帮助下调整图像PNG的大小. 这是代码:

I want to resize an image PNG with transparence plz help. Here is the code :

function resize($width,$height) {

  $new_image = imagecreatetruecolor($width, $height);

  imagealphablending($new_image, false);
  imagesavealpha($new_image,true);
  $transparent = imagecolorallocatealpha($new_image, 255, 255, 255, 127);
  imagefilledrectangle($new_image, 0, 0, $width, $height, $transparent);

  imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
  $this->image = $new_image;
}

推荐答案

尝试一下

已更新

function createThumb($upfile, $dstfile, $max_width, $max_height){
       $size = getimagesize($upfile);
       $width = $size[0];
       $height = $size[1];
       $x_ratio = $max_width / $width;
       $y_ratio = $max_height / $height;
       if( ($width <= $max_width) && ($height <= $max_height)) {
               $tn_width = $width;
               $tn_height = $height;
       } elseif (($x_ratio * $height) < $max_height) {
               $tn_height = ceil($x_ratio * $height);
               $tn_width = $max_width;
       } else {
               $tn_width = ceil($y_ratio * $width);
               $tn_height = $max_height;
       }
       if($size['mime'] == "image/jpeg"){
               $src = ImageCreateFromJpeg($upfile);
               $dst = ImageCreateTrueColor($tn_width, $tn_height);
               imagecopyresampled($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height,$width, $height);
               imageinterlace( $dst, true);
               ImageJpeg($dst, $dstfile, 100);
       } else if ($size['mime'] == "image/png"){
               $src = ImageCreateFrompng($upfile);

    // integer representation of the color black (rgb: 0,0,0)
    $background = imagecolorallocate($src, 0, 0, 0);
    // removing the black from the placeholder
    imagecolortransparent($src, $background);

    // turning off alpha blending (to ensure alpha channel information 
    // is preserved, rather than removed (blending with the rest of the 
    // image in the form of black))
    imagealphablending($src, false);

    // turning on alpha channel information saving (to ensure the full range 
    // of transparency is preserved)
    imagesavealpha($src, true);
               $dst = ImageCreateTrueColor($tn_width, $tn_height);
               imagecopyresampled($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height,$width, $height);
               Imagepng($dst, $dstfile);

       } else {

               $src = ImageCreateFromGif($upfile);
               $dst = ImageCreateTrueColor($tn_width, $tn_height);
               imagecopyresampled($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height,$width, $height);
               imagegif($dst, $dstfile);
       }
    }

这篇关于透明调整图片PNG的大小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆