Ketika saya membuat sebuah module untuk posting artikel, yang biasa kita lakukan adalah me-resize gambar asli agar hasilnya lebih kecil sehingga ketika ditampilkan di dalam artikel akan lebih menghemat bandwith. Akan jadi masalah ketika dimensi gambar yang di-resize tersebut berbeda.Mungkin ada gambar yang lebih lebar maupun ada yang lebih panjang.
Tidak masalah ketika gambar tersebut nantinya akan ditampilkan di halaman posting biasanya(mungkin didalam halaman kategori). Akan menjadi masalah ketika akan ditampilkan kedalam halaman seperti halnya vivanews. Menggunakan fasililtas slidehow untuk artikel yang terbaru. Jika gambar yang digunakan berbeda tingginya akan menjadi tidak menarik, karena content dibawahnya akan naik turun ketika gambar yang di-load lebih tinggi atau lebih pendek. Mungkin masalah ini dapat diatasi dengan memberi ruang tinggi yang cukup untuk hal slideshow tersebut.
Tapi akan lebih bagus jika menyamakan lebar dan tinggi gambar, didalam CodeIgniter terdapat fasilitas crop, seperti halnya resize, masih menggunakan library yang sama, hanya saja ditambahkan dengan beberapa config. Antara lain:
list($width, $height, $type, $attr) = getimagesize($file);
$image_width = $width;
$image_height = $height;
$image_type = $type;
$scale = 1;
$final_width = 200;
$final_height = 200;
$x = $final_width/$image_width;
$y = $final_height/$image_height;
if($x < $y)
{
$new_width = round($image_width *($final_height/$image_height));
$new_height = $final_height;
}
else
{
$new_height = round($image_height *($final_width/$image_width));
$new_width = $final_width;
}
$to_crop_left = ($new_width - ($final_width *$scale))/2;
$to_crop_top = ($new_height - ($final_height *$scale))/2;
$config['image_library'] = 'GD2';
$config['source_image'] = $file;
$config['width'] = $final_width;
$config['height'] = $final_height;
$config['x_axis'] = $to_crop_left;
$config['y_axis'] = $to_crop_top;
$config['maintain_ratio'] = false;
$this->image_lib->initialize($config);
if ( ! $this->image_lib->crop())
{
echo $this->image_lib->display_errors();
}
else
{
echo "berhasil crop";
}
fungsi di atas config adalah source untuk memposisikan crop tepat pada tengah-tengah gambar, Jadi yang dicrop adalah pada bagian samping-sampingnya. Semoga bermanfaat
