【问题标题】:Resize PNG and convert to JPG image in PHP在 PHP 中调整 PNG 大小并转换为 JPG 图像
【发布时间】:2012-04-01 21:46:34
【问题描述】:

这是我刚刚写的代码。它需要一个图像裁剪它,然后创建一个 jpg 图像。 如果我给它一个 jpg 文件,它可以正常工作,但不适用于 png(透明)图像。它只是制作一个黑色背景的空白图像。

我是第一次使用 GD 库,我的错误是什么?

public function crop_thumb($file, $width=150, $height=150){

        $file_type = get_file_extension($file);
        $file_name = get_file_name($file);

        $original_image_size = getimagesize(_dir_uploads_.$file);
        $original_width = $original_image_size[0];
        $original_height = $original_image_size[1];

        if($file_type == 'jpg'){
            $original_image_gd = imagecreatefromjpeg(_dir_uploads_.$file);
        }elseif($file_type == 'gif'){
            $original_image_gd = imagecreatefromgif(_dir_uploads_.$file);
        }elseif($file_type == 'png'){
            $original_image_gd = imagecreatefrompng(_dir_uploads_.$file);
        }

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

        $wm = $original_width / $width;
        $hm = $original_height / $height;

        $h_height = $height / 2;
        $w_height = $width / 2;

        if($original_width > $original_height ){

            $adjusted_width = $original_width / $hm;
            $half_width = $adjusted_width / 2;
            $int_width = $half_width - $w_height;

            imagecopyresampled($cropped_image_gd ,$original_image_gd ,-$int_width,0,0,0, $adjusted_width, $height, $original_width , $original_height );

        }elseif( ($original_width < $original_height) || ($original_width == $original_height) ){

            $adjusted_height = $original_height / $wm;
            $half_height = $adjusted_height / 2;
            $int_height = $half_height - $h_height;

            imagecopyresampled($cropped_image_gd , $original_image_gd ,0,-$int_height,0,0, $width, $adjusted_height, $original_width , $original_height );

        }else{

            imagecopyresampled($cropped_image_gd , $original_image_gd ,0,0,0,0, $width, $height, $original_width , $original_height );

        }

        $create = imagejpeg($cropped_image_gd, _dir_uploads_.$file_name."-".$width."x".$height.".jpg");

        return ( $create ) ? true : false;

    }

【问题讨论】:

    标签: php png gd jpeg


    【解决方案1】:

    我认为在使用imagecreatetruecolor 创建图像后,您需要使用imagesavealpha() 保存Alpha 通道。

    $cropped_image_gd = imagecreatetruecolor($width, $height);
    imagealphablending($cropped_image_gd, false);
    imagesavelalpha($cropped_image_gd, true);
    

    【讨论】:

      猜你喜欢
      • 2013-04-01
      • 1970-01-01
      • 2012-11-15
      • 2015-12-06
      • 2012-01-22
      • 2013-05-10
      • 2011-07-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多