RSS

Manipulasi Bitmap pada Android

14 Jul

Selamat siang semua, hari ini gw mau jelasin cara-cara manipulasi bitmap alias gambar pada Android. Pada tutorial ini yang bakal gw jelasin yaitu cara buat resize sama crop gambar. Silakan disimak.

Ok, gw jelasinnya ga usa pake activity ya, pake fungsi biasa aja, jadi fungsi yang pertama ini buat nge-resize bitmap, jadi resize ini misal kita punya gambar 800×600, mau kita “paksa” jadiin 400×300. Ato kalo perbandingan resolusi nya beda (misal 800×600 jadi 200×200) dia akan nge-stretch sendiri gambarnya. Sintaxnya:

Bitmap result = Bitmap.createScaledBitmap(source, newWidth, newHeight, filter);

jadi dari sintax diatas, jadi hasil resize akan ditampung di result. parameter yang dikirim ke fungsi ‘createScaledBitmap’ adalah Bitmap source atau gambar yang mau di resize, width dan height yang diharapkan. Dan filter (true/false), biasanya sih untuk filter saya beri true..

Oke, selanjutnya sintax untuk crop gambar, ini lebih ribet sedikit, jadi crop yaitu untuk memotong gambar, sama kaya di photoshop, tapi disini bentuk nya harus kotak segi empat. Sintaxnya:

Bitmap result = Bitmap.createBitmap(source, startX, startY, lengthX, lengthY);

jadi dari sintax di atas, parameter yang di passing ke fungsi ‘createBitmap’ adalah bitmap source yang ingin di crop, start point untuk X, start point untuk Y, width, dan height image baru..

Hmmm, ok, uda pada ngerti?? Oke, selanjutnya gw pengen buat fungsi berdasar 2 sintax di atas, tujuannya jadi nanti ada image yang masuk, lalu akan gw resize + crop dia jadi resolusi 640×640. jadi misal ada image nih 1500×1280, gw resize dulu jadi 750×640, trus gw potong pinggir2 nya biar jadi kotak. Oke, fungsinya jadi kaya gini:

public static Bitmap getResizedBitmap(Bitmap bm){
float height2;
float width2;

int width = bm.getWidth();
int height = bm.getHeight();

Bitmap resizeBitmap = null;
Bitmap cropBitmap = null;

//kalau landscape
if(width > height){
height2 = 640;
width2 = ((float)640/height)*width;
resizeBitmap = Bitmap.createScaledBitmap(bm, Math.round(width2), Math.round(height2), true);

cropBitmap = Bitmap.createBitmap(resizeBitmap, (Math.round(width2)-Math.round(height2))/2, 0, 640, 640);
}

//kalau potrait
else{
width2 = 640;
height2 = ((float)640/width)*height;
resizeBitmap = Bitmap.createScaledBitmap(bm, Math.round(width2), Math.round(height2), true);

cropBitmap = Bitmap.createBitmap(resizeBitmap,  0, (Math.round(height2)-Math.round(width2))/2, 640, 640);
}
//float scaleWidth = ((float)newWidth)/width;
return cropBitmap;

Oke, gw jelasin singkat, jadi pertama, dia passing bitmap, lalu kita inisialisasi variabel width, height itu ukuran bitmap source. width2, height2 itu ukuran bitmap yang ingin kita capai. Lalu, kita if buat ngecek apakah gambar potrait/landscape karena beda saat kita melakukan resize & crop nantinya.
Jika landscape, maka height alias tinggi nya yang kita buat 640 dan width nantinya akan lebih dari 640, cara menghitung width baru nya adalah dengan (640 / height lama) x width lama. [cara perbadingan biasa].
Oke, lalu kita resize berdasar width dan height baru yang sudah kita dapatkan. Setelah itu, kita akan melakukan resize. Saat landscape startY nye jelas 0, yang perlu kita hitung adalah startX. Karena kita ingin mengambil daerah perseginya tepat yang di tengah, maka startX nya yaitu (total width – total height) / 2. Lalu kita crop deh.. Hal ini berlaku mirip2 untuk yang potrait, tinggal di balik2 saja ^^

Yak, sekian tutorial hari ini, mungkin agak membingungkan logikanya, kalo ada yang ga ngerti silakan tinggalin comment.. Terima kasih..

About these ads
 
4 Comments

Posted by on July 14, 2011 in Tutorial Advance

 

4 responses to “Manipulasi Bitmap pada Android

  1. tanto

    July 18, 2011 at 8:00 am

    makasih tutorialnya bang, mantap, membantu sekali, terus berkarya.. semoga sukses

     
  2. tanto

    July 18, 2011 at 8:07 am

    tutorialnya membantu sekali, terima kasih bang, semangat.. semoga sukses

     
  3. Budi

    March 1, 2012 at 9:11 am

    gan, ane mau tanya ni. Kalau untuk buat aplikasi yang seperti permainan worm itu apa juga harus bermain dengan manipulasi bitmapp ini? terutama untuk menentukan collision dari masing-masing gambar, sehingga gambar seperti memiliki batas. Kalau bisa tolong di share tutorialnya.
    Makasih gan..

     
    • Daniel Hace

      March 3, 2012 at 9:48 am

      Halo Budi,

      ini manipulasi bitmap contoh nya hanya untuk crop sama resize image saja,
      Kalau yang collision atau buat Sprite itu Game Programming sendiri sih, tidak menggunakan ini, ada logic nya sendiri kalau bikin game..

      Thx

       

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
Follow

Get every new post delivered to your Inbox.

Join 537 other followers

%d bloggers like this: