DEV Community

Cover image for Membuat Thumbnail Gambar Dengan Codeigniter 4
MedanInCode
MedanInCode

Posted on • Originally published at medanincode.com

2 2

Membuat Thumbnail Gambar Dengan Codeigniter 4

Tutorial kali ini akan membahas bagaimana membuat gambar thumbnail menggunakan codeigniter 4.Thumbnail di web sendiri adalah gambar asli yang diperkecil agar proses loading lebih cepat.Apalagi jika gambar asli kita memiliki ukuran yang besar.

Ada dua fungsi yang bisa digunakan pertama fit dan kedua crop.

Menggunakan Fungsi Fit

Pada fungsi fit terdapat tiga parameter :

fit(int $width, int $height = null, string $position = 'center')
Enter fullscreen mode Exit fullscreen mode
  1. $width untuk lebar dari gambar
  2. $height untuk tinggi gambar
  3. $position untuk menentukan mulai dari bagian mana gambar dipotong.Ada beberapa pilihan : ‘top-left’, ‘top’, ‘top-right’, ‘left’, ‘center’, ‘right’, ‘bottom-left’, ‘bottom’, ‘bottom-right’.
<?php namespace App\Controllers;
class Thumbnail extends BaseController
{
    public function index()
    {
        $thumbnail = \Config\Services::image()
        ->withFile(ROOTPATH.'public/uploads/gambar.jpg')
        ->fit(100, 100, 'center')
        ->save(ROOTPATH.'public/uploads/thumb/gambar.jpg');
    }
}
Enter fullscreen mode Exit fullscreen mode

Pada kode diatas kita memangil fungsi \Config\Services::image() dari Codeigniter 4,withFile adalah lokasi dari file gambar asli kita,fit untuk mengcrop gambar,save untuk menyimpan hasil ke lokasi yang baru.

Menggunakan Fungsi Crop

Terdapat 6 parameter pada fungsi crop:

crop(int $width = null, int $height = null, int $x = null, int $y = null, bool $maintainRatio = false, string $masterDim = 'auto')
Enter fullscreen mode Exit fullscreen mode
  1. $width untuk lebar dari gambar
  2. $height untuk tinggi gambar
  3. $x titik awal pixel dari kiri gambar untuk mulai di crop.
  4. $y titik awal pixel dari atas gambar untuk mulai di crop.
  5. $maintainRatio defaulnya false,jika true akan mempertahakan aspect ratio dari gambar asli.
  6. $masterDim menentukan bagian mana yang tidak tersentuh jika $mainRatio bernilai true.Nilainya bisa : 'width','height','auto'.

Gunakan crop jika position awal cropping tidak ada di position fungsi fit diatas.

<?php namespace App\Controllers;
class Thumbnail extends BaseController
{
    public function index()
    {
        $ukuranCrop = 50;

        $info = \Config\Services::image()
            ->withFile(ROOTPATH.'public/uploads/gambar.jpg')
            ->getFile()
            ->getProperties(true);

        $xOffset = ($info['width'] / 2) - ($ukuranCrop / 2);
        $yOffset = ($info['height'] / 2) - ($ukuranCrop / 2);

        $thumbnail = \Config\Services::image()
                    ->withFile(ROOTPATH.'public/uploads/gambar.jpg')
                    ->crop($ukuranCrop, $ukuranCrop, $xOffset, $yOffset)
                    ->save(ROOTPATH.'public/uploads/thumb/gambar.jpg');
    }
}
Enter fullscreen mode Exit fullscreen mode

Misalnya kita ingin mencrop dari tengah-tengah gambar dengan menggunakan crop seperti yang dilakukan pada fungsi fit sebelumnya.Proses akan lebih ribet,kita perlu mendapatkan dulu info dari gambar asli agar mendapatkan posisi pas yang ditengah.

Bisa dilihat kita harus menggunakan rumus seperti yang digunakan di $xOffset untuk mendapatkan posisi center dari x.Jauh lebih ribet padahal dengan fungsi fit kita cukup panggil position center.

$xOffset = ($info['width'] / 2) - ($ukuranCrop / 2);
Enter fullscreen mode Exit fullscreen mode

Dari dua metode untuk membuat thumbnail diatas ,fit lebih kami sarankan karena lebih mudah penggunaanya.Gunakan crop hanya jika benar-benar membutuhkan titik awal kiri dan atas yang spesifik.

Sekian tutorial kali ini,jika ada pertanyaan bisa ditanyakan.Jika tidak yasudah.

Sentry blog image

How I fixed 20 seconds of lag for every user in just 20 minutes.

Our AI agent was running 10-20 seconds slower than it should, impacting both our own developers and our early adopters. See how I used Sentry Profiling to fix it in record time.

Read more

Top comments (1)

Collapse
 
aww_all profile image
Daeng Ngerang

Wah keren nih, bahasa indonesia.

Cloudinary image

Optimize, customize, deliver, manage and analyze your images.

Remove background in all your web images at the same time, use outpainting to expand images with matching content, remove objects via open-set object detection and fill, recolor, crop, resize... Discover these and hundreds more ways to manage your web images and videos on a scale.

Learn more

👋 Kindness is contagious

Explore a sea of insights with this enlightening post, highly esteemed within the nurturing DEV Community. Coders of all stripes are invited to participate and contribute to our shared knowledge.

Expressing gratitude with a simple "thank you" can make a big impact. Leave your thanks in the comments!

On DEV, exchanging ideas smooths our way and strengthens our community bonds. Found this useful? A quick note of thanks to the author can mean a lot.

Okay