图像变得紧张

时间:2012-04-09 06:57:38

标签: php

我从输入框中提交网站网址获取所有图片。虽然大小图像大于100X100或小于100x100,但我希望此图像不再被拉伸。我希望这张图片应该是100X100而不拉伸。

假设我的图像的这个src“http://l.yimg.com/bt/api/res/1.2/vni2Ykd.HwvosAbFxUVzHQ--/YXBwaWQ9eW5ld3M7Y2g9MjAwOTtjcj0xO2N3PTMwODY7ZHg9MDtkeT0zOTA7Zmk9dWxjcm9wO2g9MjgwO3E9ODU7dz00MzA-/http://l.yimg.com/os/153 /2012/04/08/142583283-10-jpg_170430.jpg“

我希望图片大小应为100X100。在我显示此图像时,它们是否可以创建缩略图。或者你拥有的任何其他解决方案。

由于

1 个答案:

答案 0 :(得分:1)

您可以尝试这样...将以下代码保存在resize.php

resize.php

<?php

    /**

     * Image Resizer. 

     * @author : Harish Chauhan

     * @copyright : Freeware

     * About :This PHP script will resize the given image and can show on the fly or save as image file.

     *

     */





    define("HAR_AUTO_NAME",1);  

    Class RESIZEIMAGE

    {

        var $imgFile="";

        var $imgWidth=0;

        var $imgHeight=0;

        var $imgType="";

        var $imgAttr="";

        var $type=NULL;

        var $_img=NULL;

        var $_error="";



        /**

         * Constructor

         *

         * @param [String $imgFile] Image File Name

         * @return RESIZEIMAGE (Class Object)

         */



        function RESIZEIMAGE($imgFile="")

        {
            if (!function_exists("imagecreate"))

            {

                $this->_error="Error: GD Library is not available.";

                return false;

            }



            $this->type=Array(1 => 'GIF', 2 => 'JPG', 3 => 'PNG', 4 => 'SWF', 5 => 'PSD', 6 => 'BMP', 7 => 'TIFF', 8 => 'TIFF', 9 => 'JPC', 10 => 'JP2', 11 => 'JPX', 12 => 'JB2', 13 => 'SWC', 14 => 'IFF', 15 => 'WBMP', 16 => 'XBM');

            if(!empty($imgFile))

                $this->setImage($imgFile);

        }

        /**

         * Error occured while resizing the image.

         *

         * @return String 

         */

        function error()

        {

            return $this->_error;

        }



        /**

         * Set image file name

         *

         * @param String $imgFile

         * @return void

         */

        function setImage($imgFile)

        {

            $this->imgFile=$imgFile;

            return $this->_createImage();

        }

        /**

         * 

         * @return void

         */

        function close()

        {

            return @imagedestroy($this->_img);

        }

        /**

         * Resize a image to given width and height and keep it's current width and height ratio

         * 

         * @param Number $imgwidth

         * @param Numnber $imgheight

         * @param String $newfile

         */

        function resize_limitwh($imgwidth,$imgheight,$newfile=NULL)

        {

            $image_per = 100;

            list($width, $height, $type, $attr) = @getimagesize($this->imgFile);

            if($width > $imgwidth && $imgwidth > 0)

                $image_per = (double)(($imgwidth * 100) / $width);



            if(floor(($height * $image_per)/100)>$imgheight && $imgheight > 0)

                $image_per = (double)(($imgheight * 100) / $height);



            $this->resize_percentage($image_per,$newfile);



        }

        /**

         * Resize an image to given percentage.

         *

         * @param Number $percent

         * @param String $newfile

         * @return Boolean

         */

        function resize_percentage($percent=100,$newfile=NULL)

        {

            $newWidth=($this->imgWidth*$percent)/100;

            $newHeight=($this->imgHeight*$percent)/100;

            return $this->resize($newWidth,$newHeight,$newfile);

        }

        /**

         * Resize an image to given X and Y percentage.

         *

         * @param Number $xpercent

         * @param Number $ypercent

         * @param String $newfile

         * @return Boolean

         */

        function resize_xypercentage($xpercent=100,$ypercent=100,$newfile=NULL)

        {

            $newWidth=($this->imgWidth*$xpercent)/100;

            $newHeight=($this->imgHeight*$ypercent)/100;

            return $this->resize($newWidth,$newHeight,$newfile);

        }



        /**

         * Resize an image to given width and height

         *

         * @param Number $width

         * @param Number $height

         * @param String $newfile

         * @return Boolean

         */

        function resize($width,$height,$newfile=NULL)

        {

            if(empty($this->imgFile))

            {

                $this->_error="File name is not initialised.";

                return false;

            }

            if($this->imgWidth<=0 || $this->imgHeight<=0)

            {

                $this->_error="Could not resize given image";

                return false;

            }

            if($width<=0)

                $width=$this->imgWidth;

            if($height<=0)

                $height=$this->imgHeight;



            return $this->_resize($width,$height,$newfile);

        }



        /**

         * Get the image attributes

         * @access Private

         *      

         */

        function _getImageInfo()

        {

            @list($this->imgWidth,$this->imgHeight,$type,$this->imgAttr)=@getimagesize($this->imgFile);

            $this->imgType=$this->type[$type];

        }



        /**

         * Create the image resource 

         * @access Private

         * @return Boolean

         */

        function _createImage()

        {

            $this->_getImageInfo($this->imgFile);

            if($this->imgType=='GIF')

            {

                $this->_img=@imagecreatefromgif($this->imgFile);

            }

            elseif($this->imgType=='JPG')

            {

                $this->_img=@imagecreatefromjpeg($this->imgFile);

            }

            elseif($this->imgType=='PNG')

            {

                $this->_img=@imagecreatefrompng($this->imgFile);

            }           

            if(!$this->_img || !@is_resource($this->_img))

            {

                $this->_error="Error loading ".$this->imgFile;

                return false;

            }

            return true;

        }



        /**

         * Function is used to resize the image

         * 

         * @access Private

         * @param Number $width

         * @param Number $height

         * @param String $newfile

         * @return Boolean

         */

        function _resize($width,$height,$newfile=NULL)

        {

            if (!function_exists("imagecreate"))

            {

                $this->_error="Error: GD Library is not available.";

                return false;

            }



            $newimg=@imagecreatetruecolor($width,$height);

            //imagecolortransparent( $newimg, imagecolorat( $newimg, 0, 0 ) );



            if($this->imgType=='GIF' || $this->imgType=='PNG')

            {

                /** Code to keep transparency of image **/

                $colorcount = imagecolorstotal($this->_img);

                if ($colorcount == 0) $colorcount = 256;

                imagetruecolortopalette($newimg,true,$colorcount);

                imagepalettecopy($newimg,$this->_img);

                $transparentcolor = imagecolortransparent($this->_img);

                imagefill($newimg,0,0,$transparentcolor);

                imagecolortransparent($newimg,$transparentcolor); 

            }



            @imagecopyresampled ( $newimg, $this->_img, 0,0,0,0, $width, $height, $this->imgWidth,$this->imgHeight);







            if($newfile===HAR_AUTO_NAME)

            {

                if(@preg_match("/\..*+$/",@basename($this->imgFile),$matches))

                    $newfile=@substr_replace($this->imgFile,"_har",-@strlen($matches[0]),0);            

            }

            elseif(!empty($newfile))

            {

                if(!@preg_match("/\..*+$/",@basename($newfile)))

                {

                    if(@preg_match("/\..*+$/",@basename($this->imgFile),$matches))

                       $newfile=$newfile.$matches[0];

                }

            }



            if($this->imgType=='GIF')

            {

                if(!empty($newfile))

                    @imagegif($newimg,$newfile);

                else

                {

                    @header("Content-type: image/gif");

                    @imagegif($newimg);

                }

            }

            elseif($this->imgType=='JPG')

            {

                if(!empty($newfile))

                    @imagejpeg($newimg,$newfile);

                else

                {

                    @header("Content-type: image/jpeg");

                    @imagejpeg($newimg);

                }

            }

            elseif($this->imgType=='PNG')

            {

                if(!empty($newfile))

                    @imagepng($newimg,$newfile);

                else

                {

                    @header("Content-type: image/png");

                    @imagepng($newimg);

                }

            }

            @imagedestroy($newimg);

        }

    }

?>

在您的代码中包含文件resize.php,并使用以下代码调整图片大小或为图片创建缩略图

include "resize.php";
$path = "your image path";
$newname = "your image name to be resized";

$rimg=new RESIZEIMAGE("$path/$newname");
$width = $rimg->imgWidth;
if($width > 800){
    $per = round(800/$width*100);  
    $rimg->resize_percentage($per,"$path/$newname"); //resize image
}
$rimg->resize(100,100,"$path/$newname"); //create thumbnail for an image
$rimg->close();