Phalcon PNG到JPG并删除透明背景图像

时间:2016-02-02 09:46:28

标签: php image alpha phalcon

我正在使用Phalcon PHP Phalcon\Images\Adapter\GD我的PNG到JPG有问题。

当我在服务器上传PNG图像时,我调整了此图像的大小,我使用背景方法$myImage->background('#FFFFFF')将背景颜色设置为白色,但此背景现在为黑色...我不明白为什么和在我拆分扩展名.PNG后,我添加.JPG。

如何将背景颜色图像设置为白色?

1 个答案:

答案 0 :(得分:0)

试试这个对我有用:

function img_resize($file,$width=0,$height=0,$proportional=false,$output='file' ) {

        if ( $height <= 0 && $width <= 0 ) return false;
        # Setting defaults and meta
        $info= getimagesize($file);
        $image= '';
        $final_width= 0;
        $final_height= 0;
        list($width_old, $height_old) = $info;
        # Calculating proportionality
        if ($proportional) {
          if      ($width  == 0)  $factor = $height/$height_old;
          elseif  ($height == 0)  $factor = $width/$width_old;
          else                    $factor = min( $width / $width_old, $height / $height_old );
          $final_width  = round( $width_old * $factor );
          $final_height = round( $height_old * $factor );
        }
        else {
          $final_width = ( $width <= 0 ) ? $width_old : $width;
          $final_height = ( $height <= 0 ) ? $height_old : $height;
        }
        # Loading image to memory according to type
        switch ( $info[2] ) {
          case IMAGETYPE_GIF:   $image = imagecreatefromgif($file);   break;
          case IMAGETYPE_JPEG:  $image = imagecreatefromjpeg($file);  break;
          case IMAGETYPE_PNG:   $image = imagecreatefrompng($file);   break;
          default: return false;
        }
        # This is the resizing/resampling/transparency-preserving magic
        $image_resized = imagecreatetruecolor( $final_width, $final_height );
        if ( ($info[2] == IMAGETYPE_GIF) || ($info[2] == IMAGETYPE_PNG) ) {
          $transparency = imagecolortransparent($image);
          if ($transparency >= 0) {
            $transparent_color  = imagecolorsforindex($image, $trnprt_indx);
            $transparency       = imagecolorallocate($image_resized, $trnprt_color['red'], $trnprt_color['green'], $trnprt_color['blue']);
            imagefill($image_resized, 0, 0, $transparency);
            imagecolortransparent($image_resized, $transparency);
          }
          elseif ($info[2] == IMAGETYPE_PNG) {
            imagealphablending($image_resized, false);
            $color = imagecolorallocatealpha($image_resized, 0, 0, 0, 127);
            imagefill($image_resized, 0, 0, $color);
            imagesavealpha($image_resized, true);
          }
        }
        imagecopyresampled($image_resized, $image, 0, 0, 0, 0, $final_width, $final_height, $width_old, $height_old);
        # Preparing a method of providing result
        switch ( strtolower($output) ) {
          case 'browser':
            $mime = image_type_to_mime_type($info[2]);
            header("Content-type: $mime");
            $output = NULL;
          break;
          case 'file':
            $output = $file;
          break;
          case 'return':
            return $image_resized;
          break;
          default:
          break;
        }
        # Writing image according to type to the output destination
        switch ( $info[2] ) {
          case IMAGETYPE_GIF:   imagegif($image_resized, $output);    break;
          case IMAGETYPE_JPEG:  imagejpeg($image_resized, $output);   break;
          case IMAGETYPE_PNG:   imagepng($image_resized, $output);    break;
          default: return false;
        }
        return true;
    }

调用函数如下:

$image = new Phalcon\Image\Adapter\GD(YOUR_IMAGE_PATH);
$a=img_resize($image->getRealpath(),$image->getWidth(),$image->getHeight());

您可能不需要某些代码。