Mengubah Ukuran JPEG dengan Java

Resize

Pernah dapat kasus harus mengubah ukuran image dengan menggunakan bahasa Java?

Nah, berikut ini adalah source code untuk mengubah (mengecilkan) ukuran file JPEG dengan Java. Dapat dari teman. Teman juga dapat dari internet.^^

import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import javax.imageio.ImageIO;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class TestResize {
public byte[] scaleImage(InputStream p_image, int p_width, int p_height) throws Exception {

InputStream imageStream = new BufferedInputStream(p_image);
Image image = (Image) ImageIO.read(imageStream);

int thumbWidth = p_width;
int thumbHeight = p_height;

// Rasio ini perlu diperhatikan agar image sesuai dengan yang diinginkan.
double thumbRatio = (double) thumbWidth / (double) thumbHeight;
int imageWidth = image.getWidth(null);
int imageHeight = image.getHeight(null);
double imageRatio = (double) imageWidth / (double) imageHeight;
if (thumbRatio < imageRatio) {
thumbHeight = (int) (thumbWidth / imageRatio);
} else {
thumbWidth = (int) (thumbHeight * imageRatio);
}
// Menggambar <strong><em>image</em></strong> yang telah diubah ukurannya.
BufferedImage thumbImage = new BufferedImage(thumbWidth,
thumbHeight, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics2D = thumbImage.createGraphics();
graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
graphics2D.drawImage(image, 0, 0, thumbWidth, thumbHeight, null);

// Menulis image ke outputstream.
ByteArrayOutputStream out = new ByteArrayOutputStream();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(thumbImage);
int quality = 100; // Antara 1-100, 100 adalah nilai kualitas yang tertinggi.
quality = Math.max(0, Math.min(quality, 100));
param.setQuality((float) quality / 100.0f, false);
encoder.setJPEGEncodeParam(param);
encoder.encode(thumbImage);
ImageIO.write(thumbImage, ".jpg", out);

// Baca outputstream ke inputstream untuk mengembalikan suatu nilai.
ByteArrayInputStream bis = new ByteArrayInputStream(out.toByteArray());
imageStream.close();
return out.toByteArray();
}

Waktu di-tes untuk mengecilkan image, source code diatas sukses! Tapi jika kemudian saya mengubah sehingga kondisinya : ukuran image lebih kecil dari rasio yang diinginkan, code diatas juga sukses untuk memperbesar image! Bagus, sih. Tapi masalahnya saya sedang butuh code yang otomatis mengecilkan image HANYA KETIKA ukuran image itu memang dibawah standar yang saya inginkan. Bisa. Dengan menggunakan method main berikut :

public static void main(String[] args) {
TestResize t = new TestResize();
FileInputStream f;
InputStream inputStream = null;
int newMaxLength = 400;
try {
f = new FileInputStream("E:\\file_input.jpg");
InputStream imageStream = new BufferedInputStream(f);
Image image = (Image) ImageIO.read(imageStream);
imageStream.close();
//pengecekan apakah ukuran image input lebih besar dari ukuran image yang diharapkan?
if ((image.getHeight(null) > newMaxLength) || (image.getWidth(null) > newMaxLength)) {
f = new FileInputStream("E:\\file_input.jpg");
FileOutputStream fo = new FileOutputStream("E:\\file_output.jpg");
fo.write(t.scaleImage(f, newMaxLength, newMaxLength));
fo.flush();
fo.close();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

Semoga bermanfaat!

Iklan

3 thoughts on “Mengubah Ukuran JPEG dengan Java

  1. Mbak, saya mohon dengan sangat.saya source code untuk mengirim file imotion, soal na saya lagi ada tugas kampus di suruh buat applikasi chat. Terimakasih..

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s