جستجو
زمانی که متن خود را وارد می نمایید در صورت وجود اطلاعات ، اطلاعات مورد نظر بصورت همزمان و بدون زدن هیچ دکمه ای نمایش داده می شود.
عضویت در خبرنامه
جهت لغو عضویت کلیک نمایید
شمارشگر شبکه های اجتماعی
پسندیده
0
فیسبوک
0
توییتر
0
گوگل پلاس
0
لینک ادین
11
نمودار بازدید از موضوع ها
نویسنده : afshin تعداد بازدید : ۴۵۰ تاریخ : یک شنبه, ۸تیرماه ۱۳۹۳
تغییر اندازه تصاویر بوسیله php
امتیاز دهید
تعداد رای 0 امتیاز 0

برای کوچک کردن تصاویر و تبدیل اندازه آن به مقیاس دلخواه راهکارهای زیادی وجود داره ولی در این بخش کلاسی از php را برای شما معرفی می کنم که به راحتی می توان اندازه تصاویر را تغییر داد , خوب بریم سر کد کلاس

    Class resize
    {
    // *** Class variables
    private $image;
    private $width;
    private $height;
    private $imageResized;

    function __construct($fileName)
    {
    // *** Open up the file
    $this->image = $this->openImage($fileName);

    // *** Get width and height
    $this->width = imagesx($this->image);
    $this->height = imagesy($this->image);
    }

    ## --------------------------------------------------------

    private function openImage($file)
    {
    // *** Get extension
    $extension = strtolower(strrchr($file, "."));

    switch($extension)
    {
    case ".jpg":
    case ".jpeg":
    $img = @imagecreatefromjpeg($file);
    break;
    case ".gif":
    $img = @imagecreatefromgif($file);
    break;
    case ".png":
    $img = @imagecreatefrompng($file);
    break;
    default:
    $img = false;
    break;
    }
    return $img;
    }

    ## --------------------------------------------------------

    public function resizeImage($newWidth, $newHeight, $option="auto")
    {
    // *** Get optimal width and height - based on $option
    $optionArray = $this->getDimensions($newWidth, $newHeight, $option);

    $optimalWidth = $optionArray["optimalWidth"];
    $optimalHeight = $optionArray["optimalHeight"];

    // *** Resample - create image canvas of x, y size
    $this->imageResized = imagecreatetruecolor($optimalWidth, $optimalHeight);
    imagecopyresampled($this->imageResized, $this->image, 0, 0, 0, 0, $optimalWidth, $optimalHeight, $this->width, $this->height);

    // *** if option is "crop", then crop too
    if ($option == "crop") {
    $this->crop($optimalWidth, $optimalHeight, $newWidth, $newHeight);
    }
    }

    ## --------------------------------------------------------

    private function getDimensions($newWidth, $newHeight, $option)
    {

    switch ($option)
    {
    case "exact":
    $optimalWidth = $newWidth;
    $optimalHeight= $newHeight;
    break;
    case "portrait":
    $optimalWidth = $this->getSizeByFixedHeight($newHeight);
    $optimalHeight= $newHeight;
    break;
    case "landscape":
    $optimalWidth = $newWidth;
    $optimalHeight= $this->getSizeByFixedWidth($newWidth);
    break;
    case "auto":
    $optionArray = $this->getSizeByAuto($newWidth, $newHeight);
    $optimalWidth = $optionArray["optimalWidth"];
    $optimalHeight = $optionArray["optimalHeight"];
    break;
    case "crop":
    $optionArray = $this->getOptimalCrop($newWidth, $newHeight);
    $optimalWidth = $optionArray["optimalWidth"];
    $optimalHeight = $optionArray["optimalHeight"];
    break;
    }
    return array("optimalWidth" => $optimalWidth, "optimalHeight" => $optimalHeight);
    }

    ## --------------------------------------------------------

    private function getSizeByFixedHeight($newHeight)
    {
    $ratio = $this->width / $this->height;
    $newWidth = $newHeight * $ratio;
    return $newWidth;
    }

    private function getSizeByFixedWidth($newWidth)
    {
    $ratio = $this->height / $this->width;
    $newHeight = $newWidth * $ratio;
    return $newHeight;
    }

    private function getSizeByAuto($newWidth, $newHeight)
    {
    if ($this->height width)
    // *** Image to be resized is wider (landscape)
    {
    $optimalWidth = $newWidth;
    $optimalHeight= $this->getSizeByFixedWidth($newWidth);
    }
    elseif ($this->height > $this->width)
    // *** Image to be resized is taller (portrait)
    {
    $optimalWidth = $this->getSizeByFixedHeight($newHeight);
    $optimalHeight= $newHeight;
    }
    else
    // *** Image to be resizerd is a square
    {
    if ($newHeight getSizeByFixedWidth($newWidth);
    } else if ($newHeight > $newWidth) {
    $optimalWidth = $this->getSizeByFixedHeight($newHeight);
    $optimalHeight= $newHeight;
    } else {
    // *** Sqaure being resized to a square
    $optimalWidth = $newWidth;
    $optimalHeight= $newHeight;
    }
    }

    return array("optimalWidth" => $optimalWidth, "optimalHeight" => $optimalHeight);
    }

    ## --------------------------------------------------------

    private function getOptimalCrop($newWidth, $newHeight)
    {

    $heightRatio = $this->height / $newHeight;
    $widthRatio = $this->width / $newWidth;

    if ($heightRatio height / $optimalRatio;
    $optimalWidth = $this->width / $optimalRatio;

    return array("optimalWidth" => $optimalWidth, "optimalHeight" => $optimalHeight);
    }

    ## --------------------------------------------------------

    private function crop($optimalWidth, $optimalHeight, $newWidth, $newHeight)
    {
    // *** Find center - this will be used for the crop
    $cropStartX = ( $optimalWidth / 2) - ( $newWidth /2 );
    $cropStartY = ( $optimalHeight/ 2) - ( $newHeight/2 );

    $crop = $this->imageResized;
    //imagedestroy($this->imageResized);

    // *** Now crop from center to exact requested size
    $this->imageResized = imagecreatetruecolor($newWidth , $newHeight);
    imagecopyresampled($this->imageResized, $crop , 0, 0, $cropStartX, $cropStartY, $newWidth, $newHeight , $newWidth, $newHeight);
    }

    ## --------------------------------------------------------

    public function saveImage($savePath, $imageQuality="100")
    {
    // *** Get extension
    $extension = strrchr($savePath, ".");
    $extension = strtolower($extension);

    switch($extension)
    {
    case ".jpg":
    case ".jpeg":
    if (imagetypes() & IMG_JPG) {
    imagejpeg($this->imageResized, $savePath, $imageQuality);
    }
    break;

    case ".gif":
    if (imagetypes() & IMG_GIF) {
    imagegif($this->imageResized, $savePath);
    }
    break;

    case ".png":
    // *** Scale quality from 0-100 to 0-9
    $scaleQuality = round(($imageQuality/100) * 9);

    // *** Invert quality setting as 0 is best, not 9
    $invertScaleQuality = 9 - $scaleQuality;

    if (imagetypes() & IMG_PNG) {
    imagepng($this->imageResized, $savePath, $invertScaleQuality);
    }
    break;

    // ... etc

    default:
    // *** No extension - No save.
    break;
    }

    imagedestroy($this->imageResized);
    }

    ## --------------------------------------------------------

    }

تابع resizeImage($newWidth, $newHeight, $option=”auto”) وظیفه اصلی تغییر اندازه تصویر به عهده داره که پارامتر اول عرض تصویر جدید و پارامتر دوم طول تصویر جدید و پارامتر سوم روش تغییر سایز تصویر که می تواند چهار مقدارexactوportraitوlandscapeوauto به خودش بگیرد . این مقادیر توسط متد getDimensions پردازش وابعاد جدید تولید می گردند .

خوب حالا یک مثال داشته باشیم :

    // *** Include the class
    include("resize-class.php");

    // *** 1) Initialise / load image
    $resizeObj = new resize("my_image.jpg");

    // *** 2) Resize image (options: exact, portrait, landscape, auto, crop)
    $resizeObj -> resizeImage(200, 200, "crop");

    // *** 3) Save image
    $resizeObj -> saveImage("my_image_resized.jpg", 100);

comments powered by Disqus
تبلیغات
آخرین تصاویر
شهر تاریخی جیزد باغ شازده ماهان عمارت و باغ نشاط (سالار) تقی آباد غار پرده رستم کاروانسرای شاه عباس یونسی حلزون اسب در کوهستان بچه پنگوئن بچه میمون ديگو کاستا دنی آلوز میامی هیت پیرلو فرانچسکو توتی لیونل مسی طوطی دریا جاده زمستانی گورخر ... ... پل کلبه ببر
وضعیت آب و هوا
  • یزد
  • ارومیه
  • اصفهان
  • البرز
  • مشهد
  • شیراز
  • تبریز
  • تهران
  • زاهدان
  • اهواز
  • زنجان
  • رامسر
  • بابلسر
  • کرمانشاه
  • بندرعباس
  • کرمان
  • گرگان
  • یاسوج
  • همدان
  • آبادان
  • مکه
موضوعات مشابه