Android - Efek Gambar
Android memungkinkan Anda memanipulasi gambar dengan menambahkan berbagai jenis efek pada gambar. Anda dapat dengan mudah menerapkan teknik pemrosesan gambar untuk menambahkan jenis efek tertentu pada gambar. Efeknya bisa berupa kecerahan, kegelapan, konversi grayscale, dll
Android menyediakan kelas Bitmap untuk menangani gambar. Ini dapat ditemukan di bawah android.graphics.bitmap. Ada banyak cara untuk membuat instance bitmap. Kami membuat bitmap gambar dari imageView.
private Bitmap bmp;
private ImageView img;
img = (ImageView)findViewById(R.id.imageView1);
BitmapDrawable abmp = (BitmapDrawable)img.getDrawable();
Sekarang kita akan membuat bitmap dengan memanggil fungsi getBitmap () dari kelas BitmapDrawable. Sintaksnya diberikan di bawah ini -
bmp = abmp.getBitmap();
Gambar tidak lain adalah matriks dua dimensi. Cara yang sama Anda akan menangani bitmap. Sebuah gambar terdiri dari piksel. Jadi Anda akan mendapatkan piksel dari bitmap ini dan menerapkan pemrosesan padanya. Sintaksnya adalah sebagai berikut -
for(int i=0; i<bmp.getWidth(); i++){
for(int j=0; j<bmp.getHeight(); j++){
int p = bmp.getPixel(i, j);
}
}
Fungsi getWidth () dan getHeight () mengembalikan tinggi dan lebar matriks. Metode getPixel () mengembalikan piksel pada indeks yang ditentukan. Setelah Anda mendapatkan pikselnya, Anda dapat dengan mudah memanipulasinya sesuai dengan kebutuhan Anda.
Terlepas dari metode ini, ada metode lain yang membantu kami memanipulasi gambar dengan lebih baik.
Sr Tidak | Metode & deskripsi |
---|---|
1 | copy(Bitmap.Config config, boolean isMutable) Metode ini menyalin piksel bitmap ini ke dalam bitmap baru |
2 | createBitmap(DisplayMetrics display, int width, int height, Bitmap.Config config) Mengembalikan bitmap yang bisa berubah dengan lebar dan tinggi yang ditentukan |
3 | createBitmap(int width, int height, Bitmap.Config config) Mengembalikan bitmap yang bisa berubah dengan lebar dan tinggi yang ditentukan |
4 | createBitmap(Bitmap src) Mengembalikan bitmap yang tidak dapat diubah dari bitmap sumber |
5 | extractAlpha() Mengembalikan bitmap baru yang menangkap nilai alfa aslinya |
6 | getConfig() Metode ini mengembalikan konfigurasi itu, jika tidak mengembalikan null |
7 | getDensity() Mengembalikan kepadatan untuk bitmap ini |
8 | getRowBytes() Kembalikan jumlah byte antar baris dalam piksel bitmap |
9 | setPixel(int x, int y, int color) Tulis Warna yang ditentukan ke dalam bitmap (dengan asumsi itu bisa berubah) pada koordinat x, y |
10 | setDensity(int density) Metode ini menentukan kepadatan untuk bitmap ini |
Contoh
Contoh di bawah ini menunjukkan beberapa efek gambar pada bitmap. Ini mengemas aplikasi dasar yang memungkinkan Anda untuk mengubah gambar menjadi skala abu-abu dan banyak lagi.
Untuk bereksperimen dengan contoh ini, Anda perlu menjalankannya di perangkat yang sebenarnya.
Langkah | Deskripsi |
---|---|
1 | Anda akan menggunakan studio Android untuk membuat aplikasi Android di bawah paket com.example.sairamkrishna.myapplication. |
2 | Ubah file src / MainActivity.java untuk menambahkan kode yang diperlukan. |
3 | Ubah res / layout / activity_main untuk menambahkan komponen XML masing-masing |
4 | Jalankan aplikasi dan pilih perangkat android yang sedang berjalan dan instal aplikasi di atasnya dan verifikasi hasilnya |
Berikut adalah konten yang telah dimodifikasi MainActivity.java.
package com.example.sairamkrishna.myapplication;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends ActionBarActivity {
Button b1, b2, b3;
ImageView im;
private Bitmap bmp;
private Bitmap operation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1 = (Button) findViewById(R.id.button);
b2 = (Button) findViewById(R.id.button2);
b3 = (Button) findViewById(R.id.button3);
im = (ImageView) findViewById(R.id.imageView);
BitmapDrawable abmp = (BitmapDrawable) im.getDrawable();
bmp = abmp.getBitmap();
}
public void gray(View view) {
operation = Bitmap.createBitmap(bmp.getWidth(),bmp.getHeight(), bmp.getConfig());
double red = 0.33;
double green = 0.59;
double blue = 0.11;
for (int i = 0; i < bmp.getWidth(); i++) {
for (int j = 0; j < bmp.getHeight(); j++) {
int p = bmp.getPixel(i, j);
int r = Color.red(p);
int g = Color.green(p);
int b = Color.blue(p);
r = (int) red * r;
g = (int) green * g;
b = (int) blue * b;
operation.setPixel(i, j, Color.argb(Color.alpha(p), r, g, b));
}
}
im.setImageBitmap(operation);
}
public void bright(View view){
operation= Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(),bmp.getConfig());
for(int i=0; i<bmp.getWidth(); i++){
for(int j=0; j<bmp.getHeight(); j++){
int p = bmp.getPixel(i, j);
int r = Color.red(p);
int g = Color.green(p);
int b = Color.blue(p);
int alpha = Color.alpha(p);
r = 100 + r;
g = 100 + g;
b = 100 + b;
alpha = 100 + alpha;
operation.setPixel(i, j, Color.argb(alpha, r, g, b));
}
}
im.setImageBitmap(operation);
}
public void dark(View view){
operation= Bitmap.createBitmap(bmp.getWidth(),bmp.getHeight(),bmp.getConfig());
for(int i=0; i<bmp.getWidth(); i++){
for(int j=0; j<bmp.getHeight(); j++){
int p = bmp.getPixel(i, j);
int r = Color.red(p);
int g = Color.green(p);
int b = Color.blue(p);
int alpha = Color.alpha(p);
r = r - 50;
g = g - 50;
b = b - 50;
alpha = alpha -50;
operation.setPixel(i, j, Color.argb(Color.alpha(p), r, g, b));
}
}
im.setImageBitmap(operation);
}
public void gama(View view) {
operation = Bitmap.createBitmap(bmp.getWidth(),bmp.getHeight(),bmp.getConfig());
for(int i=0; i<bmp.getWidth(); i++){
for(int j=0; j<bmp.getHeight(); j++){
int p = bmp.getPixel(i, j);
int r = Color.red(p);
int g = Color.green(p);
int b = Color.blue(p);
int alpha = Color.alpha(p);
r = r + 150;
g = 0;
b = 0;
alpha = 0;
operation.setPixel(i, j, Color.argb(Color.alpha(p), r, g, b));
}
}
im.setImageBitmap(operation);
}
public void green(View view){
operation = Bitmap.createBitmap(bmp.getWidth(),bmp.getHeight(), bmp.getConfig());
for(int i=0; <bmp.getWidth(); i++){
for(int j=0; j<bmp.getHeight(); j++){
int p = bmp.getPixel(i, j);
int r = Color.red(p);
int g = Color.green(p);
int b = Color.blue(p);
int alpha = Color.alpha(p);
r = 0;
g = g+150;
b = 0;
alpha = 0;
operation.setPixel(i, j, Color.argb(Color.alpha(p), r, g, b));
}
}
im.setImageBitmap(operation);
}
public void blue(View view){
operation = Bitmap.createBitmap(bmp.getWidth(),bmp.getHeight(), bmp.getConfig());
for(int i=0; i<bmp.getWidth(); i++){
for(int j=0; j<bmp.getHeight(); j++){
int p = bmp.getPixel(i, j);
int r = Color.red(p);
int g = Color.green(p);
int b = Color.blue(p);
int alpha = Color.alpha(p);
r = 0;
g = 0;
b = b+150;
alpha = 0;
operation.setPixel(i, j, Color.argb(Color.alpha(p), r, g, b));
}
}
im.setImageBitmap(operation);
}
}
Berikut ini adalah konten xml yang dimodifikasi res/layout/activity_main.xml.
Berikut abc menunjukkan tentang logo tutorialspoint.com
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:textSize="30dp"
android:text="Image Effects" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tutorials Point"
android:id="@+id/textView2"
android:layout_below="@+id/textView"
android:layout_centerHorizontal="true"
android:textSize="35dp"
android:textColor="#ff16ff01" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:layout_below="@+id/textView2"
android:layout_centerHorizontal="true"
android:src="@drawable/abc"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Gray"
android:onClick="gray"
android:id="@+id/button"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginBottom="97dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="dark"
android:onClick="dark"
android:id="@+id/button2"
android:layout_alignBottom="@+id/button"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bright"
android:onClick="bright"
android:id="@+id/button3"
android:layout_alignTop="@+id/button2"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Red"
android:onClick="gama"
android:id="@+id/button4"
android:layout_below="@+id/button3"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Green"
android:onClick="green"
android:id="@+id/button5"
android:layout_alignTop="@+id/button4"
android:layout_alignLeft="@+id/button3"
android:layout_alignStart="@+id/button3" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="blue"
android:onClick="blue"
android:id="@+id/button6"
android:layout_below="@+id/button2"
android:layout_toRightOf="@+id/textView"
android:layout_toEndOf="@+id/textView" />
</RelativeLayout>
Berikut ini adalah konten dari AndroidManifest.xml mengajukan.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.sairamkrishna.myapplication" >
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Mari kita coba menjalankan aplikasi yang baru saja kita modifikasi. Saya berasumsi bahwa Anda telah membuat fileAVDsaat melakukan pengaturan lingkungan. Untuk menjalankan aplikasi dari Android studio, buka salah satu file aktivitas proyek Anda dan klik
Sekarang jika Anda akan melihat layar perangkat Anda, Anda akan melihat gambar android bersama dengan tiga tombol.
Sekarang pilih saja tombol Gray yang akan mengubah gambar Anda menjadi skala abu-abu dan akan memperbarui UI. Itu ditunjukkan di bawah ini -
Sekarang ketuk tombol terang, yang akan menambah beberapa nilai pada setiap piksel gambar dan dengan demikian membuat ilusi kecerahan. Itu ditunjukkan di bawah ini -
Sekarang ketuk tombol gelap, yang akan mengurangi beberapa nilai ke setiap piksel gambar dan dengan demikian membuat ilusi gelap. Itu ditunjukkan di bawah ini -
Sekarang ketuk tombol merah, yang akan mengurangi beberapa nilai ke setiap piksel gambar dan dengan demikian membuat ilusi gelap. Itu ditunjukkan di bawah ini -
Sekarang ketuk tombol hijau, yang akan mengurangi beberapa nilai ke setiap piksel gambar dan dengan demikian membuat ilusi gelap. Itu ditunjukkan di bawah ini -
Sekarang ketuk tombol biru, yang akan mengurangi beberapa nilai ke setiap piksel gambar dan dengan demikian membuat ilusi gelap. Itu ditunjukkan di bawah ini -