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.