PDA

View Full Version : گالری عکس



behnam shamlo
پنج شنبه 26 آبان 1390, 13:52 عصر
سلام دوستان
من میخوام برای گالری عکس سایتم به این شکل عمل کنم (روشی که اکثر کاربلد های این سایت توصیه کردن)
به این صورت که عکس رو در دیتا بیس ذخیره نکنم و بجاش آدرس اون عکس را در دیتا بیس ذخیره کنم
ولی قبلش میخوام بدونم چطوری میشه عکسی که به هاست آپلود میشه در 2 سایز اصلی و سایز کوچک در 2 پوشه متفاوت ذخیره بشه، در اصل یعنی من فقط تصویر را یک بار در سایز اصلی آپلود میکنم ولی پی اچ پی خودش زحمت ساختن تصویر کوچک رو برام بکشه. اگه میشه راهنمایی کنید

aghasoroush
پنج شنبه 26 آبان 1390, 20:57 عصر
سلام دوست خوبم
یه سری به اینجا بزن:
http://www.webcheatsheet.com/php/create_thumbnail_images.php

pejman_view
جمعه 27 آبان 1390, 01:11 صبح
سلام دوستان
من میخوام برای گالری عکس سایتم به این شکل عمل کنم (روشی که اکثر کاربلد های این سایت توصیه کردن)
به این صورت که عکس رو در دیتا بیس ذخیره نکنم و بجاش آدرس اون عکس را در دیتا بیس ذخیره کنم
ولی قبلش میخوام بدونم چطوری میشه عکسی که به هاست آپلود میشه در 2 سایز اصلی و سایز کوچک در 2 پوشه متفاوت ذخیره بشه، در اصل یعنی من فقط تصویر را یک بار در سایز اصلی آپلود میکنم ولی پی اچ پی خودش زحمت ساختن تصویر کوچک رو برام بکشه. اگه میشه راهنمایی کنید

نگاه دو راه برای انجام این کار هست :

1- ساخت thumbnail با کمک HTML نحوه نوشتن کدش رو پایین نوشتم:


<img src='__FILE__' width='200px' height= '200px' />

که می توانی این عکس رو به عکس بزرگ لینک کنید.

2- یک کد من در زیر واست اوردم در پایینشم توضیحات می دم:

class ImageResizer {

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 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;
}

}

این یه کلاس که برای تغییر اندازه 2 کار می تونی بکنی:
روش اول دادن آدرس فایل و ذخیره آن در پوشه thumbs - اول فایل را با تابع load بارگزاری کنید سپس با تابع resize ارتفاع و عرض را بدهید سپس با تابع save نام فایل و آدرس فولدری که باید ذخیره شود.


$image = new ImageResizer();
$image->load('1.jpg');
$image->resize(250,250);
$image->save('thumbs/1.jpg');


راه بعدی نمایش مستقیم در مرورگر:
که با این روش باید header رو هم با mime-type تنظیم کنید و بجای تابع save از تابع output استفاده می کنید:


header('Content-Type: image/jpeg');
$image = new ImageResizer();
$image->load('1.jpg');
$image->resize(250,250);
$image->output();

behnam shamlo
جمعه 27 آبان 1390, 02:57 صبح
پژمان جان واقعا دستت درد نکنه از زحمتی که کشیدی، واقعا مرام گذاشتی
پژمان جان هزار بار تشکر عزیزم
------------------------------------------
سروش جان دست شما هم درد نکنه.ممنون رفیق