PHP Resize Image

PHP sebetulnya adalah bahasa pemrograman yang serba bisa, salah satunya adalah resize image.
3167  
       

PHP sebetulnya adalah bahasa pemrograman yang serba bisa, salah satunya adalah resize image. Mau lihat caranya? yuk baca selengkapnya!

Mengenal PHP GD Library

GD Library merupakan modul PHP yang tidak ada secara bawaan. Tidak semua hosting mempunyai library ini. Jika kita menggunakan cloud server atau VPS, kita bisa menginstallnya melalui command line. Kalau menggunakan XAMPP, librar ini sudah ada sebagai bawaan. Jadi pastikan itu ada dulu ya sebelum mencoba.

Cara Install PHP-GD di Ubuntu

Berikut ini adalah cara install PHP-GD di Ubuntu. Jalankan script ini dari mode Root.

sudo apt-get install php5-gd #untuk PHP 5
sudo apt-get install php7-gd #untuk PHP 7

Setelah install pastikan apache atau jika menggunakan FPM, direstart dulu ya.

Cara install PHP-GD di Centos

Sama seperti ubuntu, untuk menginstallnya harus dalam mode root.

sudo yum install php-gd #untuk PHP 5
sudo yum install php7-gd #untuk PHP 7

Setelah install pastikan apache atau jika menggunakan FPM, direstart dulu ya.

Script Resize Sederhana

Berikut ini adalah script sederhana untuk resize. Sebelum melanjutkan, siapkan satu folder dengan berisi nama file source.jpg dan fungsi di kode ini di index.php. Kemudian jalankan.

function compress($source, $destination, $quality) {
	$info = getimagesize($source);

	if ($info['mime'] == 'image/jpeg') 
		$image = imagecreatefromjpeg($source);

	elseif ($info['mime'] == 'image/gif') 
		$image = imagecreatefromgif($source);

	elseif ($info['mime'] == 'image/png') 
		$image = imagecreatefrompng($source);
	imagescale($image,1920);
	imagejpeg($image, $destination, $quality);

	return $destination;
}

Jika sudah ada file destination.jpg berarti anda berhasil.
 

Script lainya

Adapun beberapa script lainya, namun lebih kompleks.

PHP Resize Image

$images = $_FILES["userfile"]["tmp_name"];
$new_images = "thumbnails_".$_FILES["userfile"]["name"];
copy($_FILES,"Photos/".$_FILES["userfile"]["name"]);
$width=500;

// Fix Width & Heigh (Auto calculate)

$size=GetimageSize($images);
$height=round($width*$size[1]/$size[0]);
$images_orig = ImageCreateFromJPEG($images);
$photoX = ImagesX($images_orig);
$photoY = ImagesY($images_orig);
$images_fin = ImageCreateTrueColor($width, $height);
ImageCopyResampled($images_fin, $images_orig, 0, 0, 0, 0, $width+1, $height+1, $photoX, $photoY);
ImageJPEG($images_fin,"Photos/".$new_images);
ImageDestroy($images_orig);
ImageDestroy($images_fin);

PHP Resize Image Background Transparent

Ini adalah resize image untuk PNG supaya background nya tetep transparant

$source         = $_FILES["..."]["tmp_name"];
$destination    = 'abc/def/ghi.png';
$maxsize        = 45;

$size = getimagesize($source);
$width_orig = $size[0];
$height_orig = $size[1];
unset($size);
$height = $maxsize+1;
$width = $maxsize;
while($height > $maxsize){
    $height = round($width*$height_orig/$width_orig);
    $width = ($height > $maxsize)?--$width:$width;
}
unset($width_orig,$height_orig,$maxsize);
$images_orig    = imagecreatefromstring( file_get_contents($source) );
$photoX         = imagesx($images_orig);
$photoY         = imagesy($images_orig);
$images_fin     = imagecreatetruecolor($width,$height);
imagesavealpha($images_fin,true);
$trans_colour   = imagecolorallocatealpha($images_fin,0,0,0,127);
imagefill($images_fin,0,0,$trans_colour);
unset($trans_colour);
ImageCopyResampled($images_fin,$images_orig,0,0,0,0,$width+1,$height+1,$photoX,$photoY);
unset($photoX,$photoY,$width,$height);
imagepng($images_fin,$destination);
unset($destination);
ImageDestroy($images_orig);
ImageDestroy($images_fin);

Script Resize ketika Upload

Berikut ini adalah pengembangan script versi sederhana yang akan digabungkan dengan script proses upload. Silakan dicoba:

$name = ''; 
$type = ''; 
$size = ''; 
$error = ''; 
function compress_image($source_url, $destination_url, $quality) 
{ 
$info = getimagesize($source_url); 
if ($info['mime'] == 'image/jpeg') $image = imagecreatefromjpeg($source_url); 
elseif ($info['mime'] == 'image/gif') $image = imagecreatefromgif($source_url); 
elseif ($info['mime'] == 'image/png') $image = imagecreatefrompng($source_url); 
imagejpeg($image, $destination_url, $quality); 
return $destination_url; 
} 
if ($_POST) 
{ 
if ($_FILES["file"]["error"] > 0) { $error = $_FILES["file"]["error"];
 } 
 else if (($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/png") || ($_FILES["file"]["type"] == "image/pjpeg")) 
 { 
$url = 'destination1.jpg'; 
$filename = compress_image($_FILES["file"]["tmp_name"], $url, 80); 
$buffer = file_get_contents($url); /* Force download dialog... */ 
header("Content-Type: application/force-download"); 
header("Content-Type: application/octet-stream"); 
header("Content-Type: application/download"); /* Don't allow caching... */ 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); /* Set data type, size and filename */ 
header("Content-Type: application/octet-stream"); 
header("Content-Transfer-Encoding: binary"); 
header("Content-Length: " . strlen($buffer)); 
header("Content-Disposition: attachment; filename=$url"); /* Send our file... */ 
echo $buffer; 
}else 
{ 
$error = "Uploaded image should be jpg or gif or png"; } 
} 

Demikian. Semoga membantu.

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>