|
|
|
class นี้มันดึงออกมาใช้ยังไงเหรอครับ พอดีว่าผมต้องแก้ด่วนครับ ปล.ของคนอื่น |
|
|
|
|
|
|
|
Code (PHP)
<?php
class Image
{
var $image_path = '';
//holds the image path
var $sizelimit_x = 250;
//the limit of the image width
var $sizelimit_y = 250;
//the limit of the image height
var $image_resource = '';
//holds the image resource
var $keep_proportions = true;
//if true it keeps the image proportions when resized
var $resized_resource = '';
//holds the resized image resource
var $hasGD = false;
var $output = 'SAME';
//can be JPG, GIF, PNG, or SAME (same will save as old type)
function __construct()
{
if( function_exists('gd_info') ){ $this->hasGD = true; }
}
function resize_image( $image_path )
{
if( $this->hasGD == false ){ return false; }
//no GD installed on the server!
list($img_width, $img_height, $img_type, $img_attr) = @getimagesize( $image_path );
//this is going to get the image width, height, and format
if( ( $img_width != 0 ) && ( $img_height != 0 ) )
//make sure it was loaded correctly
{
switch( $img_type )
{
case 1:
//GIF
$this->image_resource = @imagecreatefromgif( $image_path );
$this->trancolor = @imagecolortransparent($this->image_resource);
if( $this->output == 'SAME' ){ $this->output = 'GIF'; }
break;
case 2:
//JPG
$this->image_resource = @imagecreatefromjpeg( $image_path );
if( $this->output == 'SAME' ){ $this->output = 'JPG'; }
break;
case 3:
//PNG
$this->image_resource = @imagecreatefrompng( $image_path );
if( $this->output == 'SAME' ){ $this->output = 'PNG'; }
}
if( $this->image_resource == '' ){ return false; }
//it wasn't able to load the image
}
else{ return false; }
//something happened!
if( $this->keep_proportions == true )
{
if( ($img_width-$this->sizelimit_x) > ($img_height-$this->sizelimit_y) )
{
//if the width of the img is greater than the size limit we scale by width
$scalex = ( $this->sizelimit_x / $img_width );
$scaley = $scalex;
}
else
//if the height of the img is greater than the size limit we scale by height
{
$scalex = ( $this->sizelimit_y / $img_height );
$scaley = $scalex;
}
//don't make it so it streches the image
if( $scalex > 1 ){ $scalex = 1; }
if( $scaley > 1 ){ $scaley = 1; }
}
else
{
$scalex = ( $this->sizelimit_x / $img_width );
$scaley = ( $this->sizelimit_y / $img_height );
//just make the image fit the image size limit
if( $scalex > 1 ){ $scalex = 1; }
if( $scaley > 1 ){ $scaley = 1; }
//don't make it so it streches the image
}
$new_width = $img_width * $scalex;
$new_height = $img_height * $scaley;
$this->resized_resource = @imagecreatetruecolor( $new_width, $new_height );
//creates an image resource, with the width and height of the size limits (or new resized proportion )
if( function_exists( 'imageantialias' )){ @imageantialias( $this->resized_resource, true ); }
//helps in the quality of the image being resized
if($img_type == 1) {
//GIF
$trnprt_indx = imagecolortransparent($this->image_resource);
if($trnprt_indx >= 0) {
//it's transparent
$trnprt_color = imagecolorsforindex($this->image_resource, $trnprt_indx);
$trnprt_indx = imagecolorallocate($this->resized_resource, $trnprt_color["red"], $trnprt_color["green"], $trnprt_color["blue"]);
imagefill($this->resized_resource, 0, 0, $trnprt_indx);
imagecolortransparent($this->resized_resource, $trnprt_indx);
}
}
@imagecopyresampled( $this->resized_resource, $this->image_resource, 0, 0, 0, 0, $new_width, $new_height, $img_width, $img_height );
//resize the iamge onto the resized resource
@imagedestroy( $this->image_resource );
//destory old image resource
return true;
}
function save_resizedimage( $path, $name )
{
switch( strtoupper($this->output) )
{
case 'GIF':
//GIF
@imagegif( $this->resized_resource, $path . $name . '.gif' );
break;
case 'JPG':
//JPG
@imagejpeg( $this->resized_resource, $path . $name . '.jpg' );
break;
case 'PNG':
//PNG
@imagepng( $this->resized_resource, $path . $name . '.png' );
}
}
function output_resizedimage()
{
$the_time = time();
header('Last-Modified: ' . date( 'D, d M Y H:i:s', $the_time ) . ' GMT');
header('Cache-Control: public');
switch( strtoupper($this->output) )
{
case 'GIF':
//GIF
header('Content-type: image/gif');
@imagegif( $this->resized_resource );
break;
case 'JPG':
//JPG
header('Content-type: image/jpg');
@imagejpeg( $this->resized_resource );
break;
case 'PNG':
//PNG
header('Content-type: image/png');
@imagepng( $this->resized_resource );
}
}
function destroy_resizedimage()
{
@imagedestroy( $this->resized_resource );
@imagedestroy( $this->image_resource );
}
}
?>
Tag : PHP
|
ประวัติการแก้ไข 2012-06-08 10:24:06
|
|
|
|
|
Date :
2012-06-08 10:23:17 |
By :
l3alLkisS |
View :
1003 |
Reply :
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
การเรียกใช้งานสร้าง instant ขึ้นมาดังนี้
Code (PHP)
$newimg = new Image();
ส่วนการเรียกใช้ member และ method เรียกใช้ได้นี้
Code (PHP)
$newimg->sizelimit_x="300"; //member
$newimg->output_resizedimage();//method
|
|
|
|
|
Date :
2012-06-08 10:59:19 |
By :
narubet |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองดูน่ะครับ
Code (PHP)
<form enctype="multipart/form-data" name="upload" action="" method="post">
<input type="file" name="filename">
<input type="submit">
</form>
<?
$Image = new Image;
if(copy($_FILES["filename"]["tmp_name"],$_FILES['filename']['name'])){
if($Image->resize_image($_FILES['filename']['name'])==true){
if($Image->save_resizedimage('','resize_'.$_FILES['filename']['name'])){
$Image->destroy_resizedimage();
}
}
}
?>
|
|
|
|
|
Date :
2012-06-08 11:10:17 |
By :
mangkunzo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ทำไมขนาดรูปมันไม่ลดลงครับ งงเลย โค๊ดนี้
|
|
|
|
|
Date :
2012-06-08 11:13:40 |
By :
l3alLkisS |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ยังไงก็ขอบคุณนะครับ แต่ภาพยังไม่ลดขนาดเลย
|
|
|
|
|
Date :
2012-06-08 11:34:02 |
By :
l3alLkisS |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 04
|