dpbvpgvrhwxen3222 2012-04-05 13:48
浏览 101
已采纳

图像调整大小与PHP [重复]

This question already has an answer here:

function resize($originalImage){

          list($width, $height) = getimagesize($originalImage);
          $newName=basename($originalImage);
          $imageResized = imagecreatetruecolor(128, 128);
          $imageTmp     = imagecreatefromjpeg ($originalImage);
          imagecopyresampled($imageResized, $imageTmp, 0, 0, 0, 0, 128, 128, $width, $height);

          imagejpeg($imageResized, "resizedImg/$newName",100);
          imageDestroy($imageResized);

}

The script returns the image with the correct name but it's just black? Any ideas?

</div>
  • 写回答

1条回答 默认 最新

  • duandaotuo5542 2012-04-05 14:08
    关注

    If you have trouble with image resizing use this code for it. Do the modifications as you need it.

    function resizeImage($file){
    
             define ('MAX_WIDTH', 1500);//max image width               
             define ('MAX_HEIGHT', 1500);//max image height 
             define ('MAX_FILE_SIZE', 10485760);
    
             //iamge save path
             $path = 'storeResize/';  
    
            //size of the resize image 
             $new_width = 128; 
             $new_height = 128;    
    
            //name of the new image           
            $nameOfFile = 'resize_'.$new_width.'x'.$new_height.'_'.basename($file['name']);       
    
            $image_type = $file['type'];
            $image_size = $file['size'];
            $image_error = $file['error'];
            $image_file = $file['tmp_name'];
            $image_name = $file['name'];        
    
            $image_info = getimagesize($image_file);
    
            //check image type 
            if ($image_info['mime'] == 'image/jpeg' or $image_info['mime'] == 'image/jpg'){    
            }
            else if ($image_info['mime'] == 'image/png'){    
            }
            else if ($image_info['mime'] == 'image/gif'){    
            }
            else{            
                //set error invalid file type
            }
    
            if ($image_error){
                //set error image upload error
            }
    
            if ( $image_size > MAX_FILE_SIZE ){
                //set error image size invalid
            }
    
            switch ($image_info['mime']) {
                case 'image/jpg': //This isn't a valid mime type so we should probably remove it
                case 'image/jpeg':
                $image = imagecreatefromjpeg ($image_file);
                break;
                case 'image/png':
                $image = imagecreatefrompng ($image_file);
                break;
                case 'image/gif':
                $image = imagecreatefromgif ($image_file);
                break;
            }    
    
            if ($new_width == 0 && $new_height == 0) {
                $new_width = 100;
                $new_height = 100;
            }
    
            // ensure size limits can not be abused
            $new_width = min ($new_width, MAX_WIDTH);
            $new_height = min ($new_height, MAX_HEIGHT);
    
            //get original image h/w
            $width = imagesx ($image);
            $height = imagesy ($image);
    
            //$align = 'b';
            $zoom_crop = 1;
            $origin_x = 0;
            $origin_y = 0;
            //TODO setting Memory
    
            // generate new w/h if not provided
            if ($new_width && !$new_height) {
                $new_height = floor ($height * ($new_width / $width));
            } else if ($new_height && !$new_width) {
                $new_width = floor ($width * ($new_height / $height));
            }
    
            // scale down and add borders
        if ($zoom_crop == 3) {
    
             $final_height = $height * ($new_width / $width);
    
             if ($final_height > $new_height) {
                $new_width = $width * ($new_height / $height);
             } else {
                $new_height = $final_height;
             }
    
        }
    
            // create a new true color image
            $canvas = imagecreatetruecolor ($new_width, $new_height);
            imagealphablending ($canvas, false);
    
    
            if (strlen ($canvas_color) < 6) {
                $canvas_color = 'ffffff';       
            }
    
            $canvas_color_R = hexdec (substr ($canvas_color, 0, 2));
            $canvas_color_G = hexdec (substr ($canvas_color, 2, 2));
            $canvas_color_B = hexdec (substr ($canvas_color, 2, 2));
    
            // Create a new transparent color for image
            $color = imagecolorallocatealpha ($canvas, $canvas_color_R, $canvas_color_G, $canvas_color_B, 127);
    
            // Completely fill the background of the new image with allocated color.
            imagefill ($canvas, 0, 0, $color);
    
            // scale down and add borders
        if ($zoom_crop == 2) {
    
                $final_height = $height * ($new_width / $width);
    
            if ($final_height > $new_height) {
                $origin_x = $new_width / 2;
                $new_width = $width * ($new_height / $height);
                $origin_x = round ($origin_x - ($new_width / 2));
                } else {
    
                $origin_y = $new_height / 2;
                $new_height = $final_height;
                $origin_y = round ($origin_y - ($new_height / 2));
    
            }
    
        }
    
            // Restore transparency blending
            imagesavealpha ($canvas, true);
    
            if ($zoom_crop > 0) {
    
                $src_x = $src_y = 0;
                $src_w = $width;
                $src_h = $height;
    
                $cmp_x = $width / $new_width;
                $cmp_y = $height / $new_height;
    
                // calculate x or y coordinate and width or height of source
                if ($cmp_x > $cmp_y) {
            $src_w = round ($width / $cmp_x * $cmp_y);
            $src_x = round (($width - ($width / $cmp_x * $cmp_y)) / 2);
                } else if ($cmp_y > $cmp_x) {
            $src_h = round ($height / $cmp_y * $cmp_x);
            $src_y = round (($height - ($height / $cmp_y * $cmp_x)) / 2);
                }
    
                // positional cropping!
            if ($align) {
                if (strpos ($align, 't') !== false) {
                    $src_y = 0;
                }
                            if (strpos ($align, 'b') !== false) {
                                    $src_y = $height - $src_h;
                            }
                            if (strpos ($align, 'l') !== false) {
                    $src_x = 0;
                }
                if (strpos ($align, 'r') !== false) {
                    $src_x = $width - $src_w;
                }
            }
    
                // positional cropping!
                imagecopyresampled ($canvas, $image, $origin_x, $origin_y, $src_x, $src_y, $new_width, $new_height, $src_w, $src_h);
    
             } else {       
            imagecopyresampled ($canvas, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
        }
            //Straight from Wordpress core code. Reduces filesize by up to 70% for PNG's
            if ( (IMAGETYPE_PNG == $image_info[2] || IMAGETYPE_GIF == $image_info[2]) && function_exists('imageistruecolor') && !imageistruecolor( $image ) && imagecolortransparent( $image ) > 0 ){
                imagetruecolortopalette( $canvas, false, imagecolorstotal( $image ) );
        }
            $quality = 100;            
            $nameOfFile = 'resize_'.$new_width.'x'.$new_height.'_'.basename($file['name']);       
    
        if (preg_match('/^image\/(?:jpg|jpeg)$/i', $image_info['mime'])){                       
            imagejpeg($canvas, $path.$nameOfFile, $quality);  
    
        } else if (preg_match('/^image\/png$/i', $image_info['mime'])){                         
            imagepng($canvas, $path.$nameOfFile, floor($quality * 0.09)); 
    
        } else if (preg_match('/^image\/gif$/i', $image_info['mime'])){               
            imagegif($canvas, $path.$nameOfFile); 
    
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 gg加速器加速游戏时,提示不是x86架构
  • ¥15 python按要求编写程序
  • ¥15 Python输入字符串转化为列表排序具体见图,严格按照输入
  • ¥20 XP系统在重新启动后进不去桌面,一直黑屏。
  • ¥15 opencv图像处理,需要四个处理结果图
  • ¥15 无线移动边缘计算系统中的系统模型
  • ¥15 深度学习中的画图问题
  • ¥15 java报错:使用mybatis plus查询一个只返回一条数据的sql,却报错返回了1000多条
  • ¥15 Python报错怎么解决
  • ¥15 simulink如何调用DLL文件