Mengecilkan dan Rename Berurutan File Gambar dengan Java

Sebagai admin web site suatu instansi, seringkali gambar yang dikirim oleh bagian marketing untuk diposting sebagai berita, dikirim dengan ukuran yang besar, dan jika melalui aplikasi Whatsapp namanya akan menjadi panjang seperti ditunjukkan gambar dibawah ini:


Besarnya ukuran file ini, sudah pasti karena saat tulisan ini ditulis, kamera ponsel telah dapat menghasilkan gambar dengan resolusi yang tinggi. Sedangkan untuk keperluan web, sebenarnya tidak harus besar, ukuran yang proposional dan representatif, justru akan mempercepat loading web dan menghemat space hosting.

Memang, untuk keperluan membuat dokumentasi suatu kegiatan, dibanding sebelum tahun 2013, penulis rasakan menjadi lebih mudah. Di mana dulu penulis harus datang langsung, dan kalaupun mengambil photo, perlu dengan kamera yang benar-benar kamera. Sekarang penulis hanya tinggal meminta photo dokumentasi dan materi inti ke siapapun yang dapat hadir dalam kegiatan tersebut, sebab dengan kamera ponsel saat ini, siapapun dapat menjadi 'photografer'. Apalagi dengan filter Artificial Intelligence yang dapat membuat pengambilan gambar menjadi 'cerah', baik kegiatan outdoor atau indoor sekalipun. Dan orang sok photografer saja, hasil jepretannya sudah bagus.

Oleh karena itu, untuk keperluan di web dan jumlahnya banyak, penulis menggunakan bantuan kode pemrograman Java sesuai kode berikut ini:

Resize Gambar

package com.edugameapp.resizeimage;

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;

/**
 *
 * @author Edugameapp
 */
public class ResizeImage 
{
    
    private BufferedImage resizeImage(BufferedImage originalImage, int targetWidth, int targetHeight)
    {
        Image resultingImage = originalImage.getScaledInstance(targetWidth, targetHeight, Image.SCALE_DEFAULT);
        BufferedImage outputImage = new BufferedImage(targetWidth, targetHeight, BufferedImage.TYPE_INT_RGB);
        outputImage.getGraphics().drawImage(resultingImage, 0, 0, null);
        return outputImage;
    }
    
    public void jalankan(String dir_path,String dir_hasil)
    {
        File f = new File(dir_path);
        for (File fo : f.listFiles()) {
            if (fo.isFile()) {                
                try {
                    BufferedImage in = ImageIO.read(fo);
                    if(in!=null){
                        if(in.getWidth()>1024){
                            File outputfile = new File(dir_hasil+"\\"+fo.getName());
                            
                            int targetWidth=1024;
                            int targetHeight=(int)Math.floor(1.0*targetWidth*in.getHeight()/in.getWidth());
                            in=resizeImage(in,targetWidth,targetHeight);
                            
                            ImageIO.write(in, "jpeg", outputfile);
                        }
                    }
                } catch (IOException ex) {
                    Logger.getLogger(ResizeImage.class.getName()).log(Level.SEVERE, null, ex);
                }
                
            } else if (fo.isDirectory()) {
                jalankan(fo.getAbsolutePath(),dir_hasil);
            }
        }
    }

    public static void main(String[] args)
    {
        ResizeImage main=new ResizeImage();
        main.jalankan("D:\\Halal Bihalal","D:\\Halal Bihalal\\Hasil");
    }
}

Rename File Berurutan

package renamefileberurutan;

import java.io.File;

/**
 *
 * @author Edugameapp
 */
public class RenameFileBerurutan
{    
    public void ganti(String dir_path,String nameTemplate)
    {
        int nomor=0;
        File f = new File(dir_path);
        for (File fo : f.listFiles()) {
            if (fo.isFile()) {
                int index = fo.getName().lastIndexOf('.');
                String extension="";
                if(index > 0) {
                  extension = fo.getName().substring(index + 1);
                }
                File rename=new File(dir_path+"\\"+nameTemplate+nomor+"."+extension);
                fo.renameTo(rename);
                nomor++;
            } else if (fo.isDirectory()) {
            }
        }
    }
    
    public static void main(String[] args) {
        RenameFileBerurutan main=new RenameFileBerurutan();
        main.ganti("D:\\Halal Bihalal\\Hasil","HalalBihalal");
    }
    
}

Class ResizeImage, memiliki skenario yaitu mengubah ukuran file gambar yang berada dalam folder 'D:\\Halal Bihalal', diubah ukurannya dengan ketentuan lebar 1024 pixel dan disimpan ke dalam folder 'D:\\Halal Bihalal\\Hasil'. Yang mana ketinggian gambar akan mengikuti proposional lebar 1024 tersebut. Alasan mengapa penulis memilih ukuran lebar ini, karena gambar dengan ukuran lebar itu, sudah penulis anggap representatif untuk ditampilkan di website.

Kemudian class RenameFileBerurutan, digunakan untuk mengubah nama file yang terdapat dalam folder 'D:\\Halal Bihalal\\Hasil', agar sesuai template nama, yaitu HalalBihalal, dengan penomoran (urutan) menggunakan variabel nomor. Variabel extension digunakan agar pengubahan nama tetap pada ekstensi nama filenya. Sehingga untuk class RenameFileBerurutan, hasil outputnya seperti HalalBihalal0.jpeg, HalalBihalal1.jpeg, HalalBihalal2.jpeg dan seterusnya. Namun misalnya, jika dalam folder 'D:\\Halal Bihalal\\Hasil' terdapat file bukan gambar, dengan nama 'catatan.txt' dan pada urutan kelima, dengan kode di atas, akan diubah juga menjadi 'HalalBihalal5.txt'.

Komentar



Postingan populer dari blog ini

Kumpulan Source Code Greenfoot

Algorithma Coretan Abstrak dengan HTML5 Canvas

Game TicTacToe dengan Greenfoot

Cara Membuat Halaman HTML Sederhana

Kode Greenfoot Game Snake Sederhana

Honeycomb Style Wallpaper dengan HTML5 Canvas

Ganti Kartu ATM BNI yang Rusak

Tips Agar Website Anda Segera di Terima oleh Google Adsense dan di-Monetize

Selamatan Latar Glundengan Bubuk Banyuwangi

Menggunakan JSON di Netbeans 8.2