English 中文(简体)
图像转化
原标题:Image resize PHP [duplicate]
This question already has answers here:
Closed 10 years ago.

Possible Duplicate:
Can anybody suggest the best image resize script in php?

I m仍然是PHP中图像处理或文档处理方面的新项目。

赞赏对以下事项的任何投入:

I post an image file using a simple html form and upload it via php. When i try and alter my code to accomodate larger files (i.e. resize) I get an error. Have been searching online but cant find anything really simple.

$size = getimagesize($_FILES[ image ][ tmp_name ]);

//compare the size with the maxim size we defined and print error if bigger
if ($size == FALSE)
{
    $errors=1;
}else if($size[0] > 300){   //if width greater than 300px
    $aspectRatio = 300 / $size[0];
    $newWidth = round($aspectRatio * $size[0]);
    $newHeight = round($aspectRatio * $size[1]);
    $imgHolder = imagecreatetruecolor($newWidth,$newHeight);
}

$newname= ROOTPATH.LOCALDIR."/images/".$image_name; //image_name is generated

$copy = imagecopyresized($imgHolder, $_FILES[ image ][ tmp_name ], 0, 0, 0, 0, $newWidth, $newHeight, $size[0], $size[1]);
move_uploaded_file($copy, $newname); //where I want to move the file to the location of $newname

我发现的错误是:

imagecopyresized(): supplied argument is not a valid Image resource in

预 收


感谢大家提供的所有投入,一味改变这种投入。

$oldImage = imagecreatefromstring(file_get_contents($_FILES[ image ][ tmp_name ]));
$copy = imagecopyresized($imgHolder, $oldImage, 0, 0, 0, 0, $newWidth, $newHeight, $size[0], $size[1]);
if(!move_uploaded_file($copy, $newname)){
    $errors=1;
}

避免出现PHP错误,但不能节省:

任何想法?

再次感谢


<>Result>

工作之后。

$oldImage = imagecreatefromjpeg($img);
$imageHolder = imagecreatetruecolor($newWidth, $newHeight);
imagecopyresized($imageHolder, $oldImage, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
imagejpeg($imageHolder, $newname, 100);

感谢每个人的帮助

最佳回答

图像资源是第二个参数,而不是档案名称。 你需要首先装上档案。 如果你知道档案类型,你可以使用<代码>,从FILETYPE装载。 举例来说,如果它使用_imagecreate fromjpeg,并通过文档名称——这将退回图像资源。

如果你不了解档案类型,就没有丢失。 查阅文件时,可使用<条码>直线/代码>(自动发现档案类型)以装载如下:

$oldImage = imagecreatefromstring(file_get_contents($_FILES[ image ][ tmp_name ]));
问题回答

<代码>_FILES[形象][tmp_name] 是不是图像资源的。 你们必须利用来自*(a)功能的图像来创造资源。

这里是我挽救 picture的情景:

• 保护和节省职能:

function SaveThumbnail($imagePath, $saveAs, $max_x, $max_y) 
{
    ini_set("memory_limit","32M");
    $im  = imagecreatefromjpeg ($imagePath);
    $x = imagesx($im);
    $y = imagesy($im);

    if (($max_x/$max_y) < ($x/$y)) 
    {
        $save = imagecreatetruecolor($x/($x/$max_x), $y/($x/$max_x));
    }
    else 
    {
        $save = imagecreatetruecolor($x/($y/$max_y), $y/($y/$max_y));
    }
    imagecopyresized($save, $im, 0, 0, 0, 0, imagesx($save), imagesy($save), $x, $y);

    imagejpeg($save, $saveAs);
    imagedestroy($im);
    imagedestroy($save);
}

使用:

$thumb_dir = "/path/to/thumbnaildir/"
$thumb_name = "thumb.jpg"
$muf = move_uploaded_file($_FILES[ imgfile ][ tmp_name ], "/tmp/test.jpg")

if($muf)
{
    SaveThumbnail("/tmp/test.jpg", $thumb_dir . $thumb_name, 128, 128);
}

I use ImageMagick, forpinuff such as that. 看一看更加简单!

纽约总部

$target= //destination path
move_uploaded_file($_FILES[ item ][ tmp_name ],$target);

$image = new imagick($target);

$image->setImageColorspace(imagick::COLORSPACE_RGB);
$image->scaleImage(350,0);

$image->writeImage($target);

之后,您可使用getImageGeometry()获得湿度和高度。

例如:

$size=$image->getImageGeometry();
if($size[ width ] > 300){   //if width greater than 
   $image->scaleImage(300,0);
}

此外,使用<代码>尺度Image(300,0),意味着图像Magick根据相关比率自动计算最高点。

我正在从事类似的工作。 我尝试了文字和图像。 它们是良好的工具,但需要时间才能建立。 我最后使用冰雪服务器上的管道。 我发现,如果你需要迅速这样做的话,这并不确定它是否建在了六氯环己烷服务器上,而是符合更快的解决办法。

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); 

    }
}




相关问题
Brute-force/DoS prevention in PHP [closed]

I am trying to write a script to prevent brute-force login attempts in a website I m building. The logic goes something like this: User sends login information. Check if username and password is ...

please can anyone check this while loop and if condition

<?php $con=mysql_connect("localhost","mts","mts"); if(!con) { die( unable to connect . mysql_error()); } mysql_select_db("mts",$con); /* date_default_timezone_set ("Asia/Calcutta"); $date = ...

定值美元

如何确认来自正确来源的数字。

Generating a drop down list of timezones with PHP

Most sites need some way to show the dates on the site in the users preferred timezone. Below are two lists that I found and then one method using the built in PHP DateTime class in PHP 5. I need ...

Text as watermarking in PHP

I want to create text as a watermark for an image. the water mark should have the following properties front: Impact color: white opacity: 31% Font style: regular, bold Bevel and Emboss size: 30 ...

How does php cast boolean variables?

How does php cast boolean variables? I was trying to save a boolean value to an array: $result["Users"]["is_login"] = true; but when I use debug the is_login value is blank. and when I do ...

热门标签