PDA

View Full Version : مبتدی: Resize Picture (تغییر اندازه ابعاد تصویر)



kabotareazad
دوشنبه 14 تیر 1389, 21:09 عصر
سلام
من می خوام زمانی که کاربر یک تصویر را آپلود می کند بتونم یک تصویر دیگه از اون بسازم اما با سایز کوچکتر
مثلا اگر ابعاد تصویر اولیه 100 در 200 باشه اون رو به 50 در 100 تغییر اندازه بدم.
کسی می تونه راهنماییم کنه؟؟؟؟

pashaie
دوشنبه 14 تیر 1389, 22:10 عصر
از کد زیر استفاده کن

<?php
##############################################
# Shiege Iseng Resize Class
# 11 March 2003
# shiegege_at_yahoo.com
# View Demo :
# http://shiege.com/scripts/thumbnail/
/*############################################
Sample :
$thumb=new thumbnail("./shiegege.jpg"); // generate image_file, set filename to resize
$thumb->size_width(100); // set width for thumbnail, or
$thumb->size_height(300); // set height for thumbnail, or
$thumb->size_auto(200); // set the biggest width or height for thumbnail
$thumb->jpeg_quality(75); // [OPTIONAL] set quality for jpeg only (0 - 100) (worst - best), default = 75
$thumb->show(); // show your thumbnail
$thumb->save("./huhu.jpg"); // save your thumbnail to file
----------------------------------------------
Note :
- GD must Enabled
- Autodetect file extension (.jpg/jpeg, .png, .gif, .wbmp)
but some server can't generate .gif / .wbmp file types
- If your GD not support 'ImageCreateTrueColor' function,
change one line from 'ImageCreateTrueColor' to 'ImageCreate'
(the position in 'show' and 'save' function)
*/############################################


class thumbnail
{
var $img;

function thumbnail($imgfile)
{
//detect image format
$this->img["format"]=ereg_replace(".*\.(.*)$","\\1",$imgfile);
$this->img["format"]=strtoupper($this->img["format"]);
if ($this->img["format"]=="JPG" || $this->img["format"]=="JPEG") {
//JPEG
$this->img["format"]="JPEG";
$this->img["src"] = ImageCreateFromJPEG ($imgfile);
} elseif ($this->img["format"]=="PNG") {
//PNG
$this->img["format"]="PNG";
$this->img["src"] = ImageCreateFromPNG ($imgfile);
} elseif ($this->img["format"]=="GIF") {
//GIF
$this->img["format"]="GIF";
$this->img["src"] = ImageCreateFromGIF ($imgfile);
} elseif ($this->img["format"]=="WBMP") {
//WBMP
$this->img["format"]="WBMP";
$this->img["src"] = ImageCreateFromWBMP ($imgfile);
} else {
//DEFAULT
echo "Not Supported File";
exit();
}
@$this->img["lebar"] = imagesx($this->img["src"]);
@$this->img["tinggi"] = imagesy($this->img["src"]);
//default quality jpeg
$this->img["quality"]=75;
}

function size_height($size=100)
{
//height
$this->img["tinggi_thumb"]=$size;
@$this->img["lebar_thumb"] = ($this->img["tinggi_thumb"]/$this->img["tinggi"])*$this->img["lebar"];
}

function size_width($size=100)
{
//width
$this->img["lebar_thumb"]=$size;
@$this->img["tinggi_thumb"] = ($this->img["lebar_thumb"]/$this->img["lebar"])*$this->img["tinggi"];
}

function size_auto($size=100)
{
//size
if ($this->img["lebar"]>=$this->img["tinggi"]) {
$this->img["lebar_thumb"]=$size;
@$this->img["tinggi_thumb"] = ($this->img["lebar_thumb"]/$this->img["lebar"])*$this->img["tinggi"];
} else {
$this->img["tinggi_thumb"]=$size;
@$this->img["lebar_thumb"] = ($this->img["tinggi_thumb"]/$this->img["tinggi"])*$this->img["lebar"];
}
}

function jpeg_quality($quality=75)
{
//jpeg quality
$this->img["quality"]=$quality;
}

function show()
{
//show thumb
@Header("Content-Type: image/".$this->img["format"]);

/* change ImageCreateTrueColor to ImageCreate if your GD not supported ImageCreateTrueColor function*/
$this->img["des"] = ImageCreateTrueColor($this->img["lebar_thumb"],$this->img["tinggi_thumb"]);
@imagecopyresized ($this->img["des"], $this->img["src"], 0, 0, 0, 0, $this->img["lebar_thumb"], $this->img["tinggi_thumb"], $this->img["lebar"], $this->img["tinggi"]);

if ($this->img["format"]=="JPG" || $this->img["format"]=="JPEG") {
//JPEG
imageJPEG($this->img["des"],"",$this->img["quality"]);
} elseif ($this->img["format"]=="PNG") {
//PNG
imagePNG($this->img["des"]);
} elseif ($this->img["format"]=="GIF") {
//GIF
imageGIF($this->img["des"]);
} elseif ($this->img["format"]=="WBMP") {
//WBMP
imageWBMP($this->img["des"]);
}
}

function save($save="")
{
//save thumb
if (empty($save)) $save=strtolower("./thumb.".$this->img["format"]);
/* change ImageCreateTrueColor to ImageCreate if your GD not supported ImageCreateTrueColor function*/
$this->img["des"] = ImageCreateTrueColor($this->img["lebar_thumb"],$this->img["tinggi_thumb"]);
@imagecopyresized ($this->img["des"], $this->img["src"], 0, 0, 0, 0, $this->img["lebar_thumb"], $this->img["tinggi_thumb"], $this->img["lebar"], $this->img["tinggi"]);

if ($this->img["format"]=="JPG" || $this->img["format"]=="JPEG") {
//JPEG
imageJPEG($this->img["des"],"$save",$this->img["quality"]);
} elseif ($this->img["format"]=="PNG") {
//PNG
imagePNG($this->img["des"],"$save");
} elseif ($this->img["format"]=="GIF") {
//GIF
imageGIF($this->img["des"],"$save");
} elseif ($this->img["format"]=="WBMP") {
//WBMP
imageWBMP($this->img["des"],"$save");
}
}
}
?>


طریقه استفاده:

<?php
// see online : http://kentung.f2o.org/scripts/thumbnail/sample.php
include_once("resize.php");
$thumb=new thumbnail("/www/shiegege.jpg"); // prepare to generate "shiegege.jpg" in directory "/www"
$thumb->size_width(100); // set width for thumbnail with 100 pixels
$thumb->show(); // show my thumbnail
$thumb->save("/www/thumb/huhu.jpg"); // save my thumbnail to file "huhu.jpg" in directory "/www/thumb
?>



منبع: http://www.phpclasses.org/package/1261-PHP-Create-thumbnail-of-a-picture-on-the-fly.html

LORD AELX
پنج شنبه 21 مرداد 1389, 06:38 صبح
من با این اسکریپت کار کردم ولی متاسفانه علارغم اینکه سایز thumbnail را به اسکریپت دادم، مثلا بجای اینکه 100x100 بسازه، 133x100 می سازه!!! :گیج: کسی نمیدونه مشکل چیه؟!

ArtMiz
پنج شنبه 21 مرداد 1389, 13:55 عصر
من از تابع خودم استفاده می کنم. حرفه ای نیست ولی کارو راه میندازه


function thumbnail($img,$size,$imagebasename,$filetype)
{
$image = $img ;
$imagebasename="thumb".$imagebasename;
$width = $size[0];
$height = $size[1];

$image_dir = "images/uploaded/product";
$newwidth = 130 ;
$newheight = 90 ;


if($filetype == 'image/pjpeg' ) $src = imagecreatefromjpeg($image);
else if($filetype == 'image/gif' ) $src = imagecreatefromgif($image);
else if($filetype == 'image/jpeg' ) $src = imagecreatefromjpeg($image);

$im = imagecreatetruecolor($newwidth,$newheight);
imagecopyresampled($im,$src,0,0,0,0,$newwidth,$new height,$width,$height);

imagejpeg($im, "../$image_dir/thumb/$imagebasename");
imagedestroy($im);
}

LORD AELX
پنج شنبه 21 مرداد 1389, 16:53 عصر
من از تابع خودم استفاده می کنم. حرفه ای نیست ولی کارو راه میندازه
...

منم نهایتا دیروز مجبور شدم خودم یه کلاس برای این کار بنویسم... ولی بیشتر می خواستم اینو بدونم که چرا کدی که pashaie عزیز گذاشتند، به طور صحیح عمل resize رو انجام نمیده... :متفکر:

kabotareazad
پنج شنبه 01 مهر 1389, 12:04 عصر
کدتون را میشه بذارید!

h_qorbani
پنج شنبه 01 مهر 1389, 12:17 عصر
سلام
من می خوام زمانی که کاربر یک تصویر را آپلود می کند بتونم یک تصویر دیگه از اون بسازم اما با سایز کوچکتر
مثلا اگر ابعاد تصویر اولیه 100 در 200 باشه اون رو به 50 در 100 تغییر اندازه بدم.
کسی می تونه راهنماییم کنه؟؟؟؟

از فایل phpکه ضمیمه کردم میتونی استفاده کنی.

ali 888
شنبه 09 مهر 1390, 20:24 عصر
سلام
دوستان من با این قسمت <SPAN class=highlight>imagecreatefromjpeg</SPAN> مشکل دارم این کلاس رو باید تعریف کنم یا در php.ini چیزی رو فعال کنم.
چند روزی هست رو عکس کار میکنم,کار pic to pic و text to pic رو انجام دادم ولی هنوز موفق نشدم از این پست استفاده کنم.

payacms
شنبه 30 شهریور 1398, 12:50 عصر
از فایل phpکه ضمیمه کردم میتونی استفاده کنی.
سلام دوست عزیز
یه سوال
من از این فایل و کلاس های دیگه استفاده کردم همه جواب میده ولی رو بعضی عکس ها اصلا جواب نمیده
مثلا این عکس ببینید http://payacms.ir/01/sys/gallery_c/pic/ok.jpg
هر کاری میکنم رو این جواب نمیده و کیفیت و یا عرض و ارتفاع کم نمیکنه !!!!!! میدونید دلیلش چیه ؟

payacms
شنبه 30 شهریور 1398, 12:53 عصر
دوستان دیگه اگر میدونید ممنون میشم پاسخ بدید

یه سوال
من از این فایل و کلاس های دیگه استفاده کردم همه جواب میده ولی رو بعضی عکس ها اصلا جواب نمیده
مثلا این عکس ببینید http://payacms.ir/01/sys/gallery_c/pic/ok.jpg

هر کاری میکنم رو این جواب نمیده و کیفیت و یا عرض و ارتفاع کم نمیکنه !!!!!! میدونید دلیلش چیه ؟