Ketika awal saya mencoba melakukan crop image dengan menggunakan gambar yang dimensi tingginya lebih besar, crop image ini berhasil. Sebaliknya, ketika menggunakan gambar yang dimensinya lebih lebar, gambar tidak ter-crop dengan sempurna, ada bagian blok warna hitam.
Setelah saya cari tahu ternyata masalahnya adalah dimensinya kurang sesuai. Karena sebelum dicrop gambar harus diresize terlebih dahulu agar hasil cropnya tidak terlalu besar dan seragam. Jika misalnya settingan width dan height resize saya menggunakan nilai 200. Masalahnya adalah ketika gambar dengan dimensi lebih tinggi, maka lebar gambar akan bernilai 200. Sedangkan ketika gambar dengan dimensi lebih lebar, maka lebar gambar tetap 200. Poin inilah yang menjadi masalah, ketika gambar lebih lebar, maka seharusnya bukan lebarnya yang bernilai 200, tetapi tingginya yang bernilai 200. Hal inilah yang menjadi kunci suksesnya hasil crop image tersebut.
Solusi yang saya dapatkan adalah dengan ketika sebelum me-resize saya bandingkan lebar dan tinggi gambar. Cara yang saya lakukan adalah:
$asal = base_url().'./uploads/media/'."nama image.jpg";
$propt_asal = getimagesize($asal);
$width_asal = $propt_asal[0];
$height_asal = $propt_asal[1];
$this->load->library('image_lib');
$config['image_library'] = 'GD2';
$config['source_image'] = './uploads/media/'.$newimagename;
$config['create_thumb'] = TRUE;
$config['thumb_marker'] = '_tn';
$config['master_dim'] = 'width';
$config['quality'] = 600;
$config['maintain_ratio'] = TRUE;
<pre> $config['width'] = 200;
$config['height'] = 200;</pre>
if($width_asal > $height_asal)
{
$config['master_dim'] = 'height';
}
else
{
$config['master_dim'] = 'width';
}
Maksud dari config $config[‘master_dim’] adalah orientasi dari resize. Ketika gambar dengan dimensi lebih tinggi, maka orientasi resizenya adalah lebar gambar. Sedangkan jika dimensi gambar lebih lebar, maka orientasi resizenya adalah tinggi gambar. Jadi apapun dimensi gambar, baik itu lebih tinggi maupun lebih lebar, maka akan tetap menghasilkan crop dengan dimensi 200 x 200. Source ini sudah saya coba dan gunakan, berhasil sekali. Semoga bermanfaat
