تغییر اندازه عکس هنگام upload

narenj

Member
من یه کد PHP دارم که هنگام upload عکس سایز عکس رُ تغییر میده

مشکل من اینجاست که حتی اگر عکس کوچیک تر از اندازه مشخص شده (مثلا 500 پیکسل) باشه، اون عکسُ بزرگ میکنه، در صورتی که من میخوام فقط اگر بزرگتر بود اون عکسُ کوچیک کنه و اگر کوچیک تر بود، با همون اندازه upload کنه

کسی میتون راهنمایی کنه؟

در ضمن، قبل از ایجاد تاپیک search کردم ولی جواب درستی پیدا نکردم
 
آخرین ویرایش:

narenj

Member
میشه شما یه نگاه به کد من بندازید و شرط لازم را قرار بدید؟ چون من زیاد با php آشنا نیستم

ممنون
 

parsiteam

Member
با تابع getimagesize میتونی ابعاد عکستو بدست بیاری . بهد چک کنی که اگر از اون سایزی که میخوای کوچکتر بود هیچ کاری انجام نشه ولی اگر بزرگتر بود به سایز دلخواهت تبدیل بشه . برای اطلاعات بیشتر از این تابع به سایت www.php.net مراجعه کن .


موفق باشی .
 

narenj

Member
توی کد ابعاد رُ به دست آوردم
PHP:
$x = @getimagesize($img);
// image width
$sw = $x[0];
// image height
$sh = $x[1];

حالا این شرطُ کجا باید قرار بدم؟
من کد رُ اینجا پیوست کردم، ممنون میشم اگر میشه تغییرات را انجام بدید و دوباره پیوست کنید
 

Allahparast

Member
این کلاس کارت رو راه میندازه
PHP:
<?php
/*
* File: SimpleImage.php
* Author: Simon Jarvis
* Copyright: 2006 Simon Jarvis
* Date: 08/11/06
* Link: http://www.white-hat-web-design.co.uk/articles/php-image-resizing.php
* 
* This program is free software; you can redistribute it and/or 
* modify it under the terms of the GNU General Public License 
* as published by the Free Software Foundation; either version 2 
* of the License, or (at your option) any later version.
* 
* This program is distributed in the hope that it will be useful, 
* but WITHOUT ANY WARRANTY; without even the implied warranty of 
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
* GNU General Public License for more details: 
* http://www.gnu.org/licenses/gpl.html
*
*/
 
class SimpleImage {
   
   var $image;
   var $image_type;
 
   function load($filename) {
      $image_info = getimagesize($filename);
      $this->image_type = $image_info[2];
      if( $this->image_type == IMAGETYPE_JPEG ) {
         $this->image = imagecreatefromjpeg($filename);
      } elseif( $this->image_type == IMAGETYPE_GIF ) {
         $this->image = imagecreatefromgif($filename);
      } elseif( $this->image_type == IMAGETYPE_PNG ) {
         $this->image = imagecreatefrompng($filename);
      }
   }
   function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) {
      if( $image_type == IMAGETYPE_JPEG ) {
         imagejpeg($this->image,$filename,$compression);
      } elseif( $image_type == IMAGETYPE_GIF ) {
         imagegif($this->image,$filename);         
      } elseif( $image_type == IMAGETYPE_PNG ) {
         imagepng($this->image,$filename);
      }   
      if( $permissions != null) {
         chmod($filename,$permissions);
      }
   }
   function output($image_type=IMAGETYPE_JPEG) {
      if( $image_type == IMAGETYPE_JPEG ) {
         imagejpeg($this->image);
      } elseif( $image_type == IMAGETYPE_GIF ) {
         imagegif($this->image);         
      } elseif( $image_type == IMAGETYPE_PNG ) {
         imagepng($this->image);
      }   
   }
   function getWidth() {
      return imagesx($this->image);
   }
   function getHeight() {
      return imagesy($this->image);
   }
   function resizeToHeight($height) {
      $ratio = $height / $this->getHeight();
      $width = $this->getWidth() * $ratio;
      $this->resize($width,$height);
   }
   function resizeToWidth($width) {
      $ratio = $width / $this->getWidth();
      $height = $this->getheight() * $ratio;
      $this->resize($width,$height);
   }
   function scale($scale) {
      $width = $this->getWidth() * $scale/100;
      $height = $this->getheight() * $scale/100; 
      $this->resize($width,$height);
   }
   function resize($width,$height) {
      $new_image = imagecreatetruecolor($width, $height);
      imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
      $this->image = $new_image;   
   }      
}
?>
Usage

Save the above file as SimpleImage.php and take a look at the following examples of how to use the script.
The first example below will load a file named picture.jpg resize it to 250 pixels wide and 400 pixels high and resave it as picture2.jpg
<?php
include('SimpleImage.php');
$image = new SimpleImage();
$image->load('picture.jpg');
$image->resize(250,400);
$image->save('picture2.jpg');
?>

If you want to resize to a specifed width but keep the dimensions ratio the same then the script can work out the required height for you, just use the resizeToWidth function.
<?php
include('SimpleImage.php');
$image = new SimpleImage();
$image->load('picture.jpg');
$image->resizeToWidth(250);
$image->save('picture2.jpg');
?>

You may wish to scale an image to a specified percentage like the following which will resize the image to 50% of its original width and height
<?php
include('SimpleImage.php');
$image = new SimpleImage();
$image->load('picture.jpg');
$image->scale(50);
$image->save('picture2.jpg');
?>

You can of course do more than one thing at once. The following example will create two new images with heights of 200 pixels and 500 pixels
<?php
include('SimpleImage.php');
$image = new SimpleImage();
$image->load('picture.jpg');
$image->resizeToHeight(500);
$image->save('picture2.jpg');
$image->resizeToHeight(200);
$image->save('picture3.jpg');
?>

The output function lets you output the image straight to the browser without having to save the file. Its useful for on the fly thumbnail generation
PHP:
 	<?php
   header('Content-Type: image/jpeg');
   include('SimpleImage.php');
   $image = new SimpleImage();
   $image->load('picture.jpg');
   $image->resizeToWidth(150);
   $image->output();
?>

The following example will resize and save an image which has been uploaded via a form
PHP:
 	<?php
   if( isset($_POST['submit']) ) {
      include('SimpleImage.php');
      $image = new SimpleImage();
      $image->load($_FILES['uploaded_image']['tmp_name']);
      $image->resizeToWidth(150);
      $image->output();
   } else {
?>   <form action="upload.php" method="post" enctype="multipart/form-data">
      <input type="file" name="uploaded_image" />
      <input type="submit" name="submit" value="Upload" />
   </form><?php
   }
?>
Further Information

This script will eventually be developed further to include functions for easily sharpening, bluring, cropping, brightening and colouring images.

 

narenj

Member
من فایل SimpleImage.php را ایجاد کردم
فایل upload.php را هم درست کردم
اما وقتی بر روی Upload کلیک میکنم یک سری نوشته های نا مفهوم نشون میده

فکر کنم اگر کسی یه نگاهی به کد پیوستی خودم بندازه و اونُ اصلاح کنه بهتر باشه

ممنون از همگی
 

foranyone

Well-Known Member

جدیدترین ارسال ها

بالا