0

入力ボックスに Web サイトの URL を送信して、すべての画像を取得しています。動作しますが、画像のサイズが 100X100 を超えたり 100x100 未満であっても、この画像を引き伸ばさないようにしたいと考えています。この画像は、ストレッチなしで 100X100 にする必要があります。

Suppose this src of my image "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にしたいです。この画像を表示している間にサムネイルを作成する機能はありますか。またはあなたが持っている他の解決策。

ありがとう

4

1 に答える 1

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();
于 2012-04-09T07:27:51.770 に答える