Belajar Cara Memotong (Crop) Gambar di Android Studio


Assalamualaikum Warahmatullahi Wabarakatuh.

Didalam sebuah aplikasi, fitur untuk memotong gambar sudah sangan umum digunakan, banyak sekali aplikasi-aplikasi android mempunyai fitur untuk memotong gambar / crop image, misalnya aplikasi sosial media, messenger, aplikasi ediring foto, dsb. Fungsi ini digunakan untuk menentukan posisi gambar yang akan ditampilkan, sehingga tidak sepenuhnya ditampilkan.


Selain itu crop image digunakan untuk gambar yang mempunyai resolusi besar, sehingga user bisa menentukan posisi gambar yang ingin ditampilkan pada layar, contohnya seperti aplikasi WhatsApp, pada aplikasi tersebut saat user ingin mengubah foto profil, pertama user diharuskan untuk corping image terlebih dahulu. baru setelah itu gambar dapat ditampilkan

Materi lainnya yang direkomendasikan:

Pada tutorial ini kita akan membuat project sederhana, pada aplikasi tersebut user dapat menampilkan gambar pada layar menggunakan ImageView, gambar tersebut diambil dari penyimpanan Galeri, setelah user memilih gambar, setelah itu user akan diarahkan pada halaman croping image, jika berhasil maka gambar akan ditampilkan.

Belajar Cara Memotong (Crop) Gambar di Android Studio

1) Buka aplikasi Android Studio kalian, Buat Project Baru.

2) Jika sudah, selanjutnya tambahkan kedua library berikut ini kedalam dependencies kalian, library tersebut digunakan untuk menampilkan halaman croping image dan memproses pemotongan gambar dan satu lagi untuk menampilkan gambar (Picasso).
implementation 'com.theartofdev.edmodo:android-image-cropper:2.7.0'
implementation 'com.squareup.picasso:picasso:2.71828'
3) Selanjutnya buka activity_main.xml kalian, disini kita akan mendesain tampilkan layout untuk aplikasi yang akan kita buat, disini kita cukup menambahkan Widget ImageView dan Sebuah Button.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:layout_margin="12dp"
    android:orientation="vertical"
    tools:context="android.cianjur.developer.net.basicandroid.MainActivity">

    <Button
        android:id="@+id/choose_image"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Pilih Gambar" />

    <ImageView
        android:id="@+id/myPicture"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>
View:


4) Buka file androidManifest.xml kalian, disini kita akan menambahkan Activity untuk proses Cropping, tambakan didalam tag <application>, seperti ini.
<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">

        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>

            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>

    </activity>

    <!-- Menambahkan Activity Untuk Cropping Image -->
    <activity
        android:name="com.theartofdev.edmodo.cropper.CropImageActivity"
        android:theme="@style/Base.Theme.AppCompat" />
        
</application>
5) Terakhir buka class MainActivity.java, disini kita akan menggunakan kedua library yang sudah di implementasikan tadi, yaitu image-cropper dan picasso.
package android.cianjur.developer.net.basicandroid;

/*
 Dibuat Oleh WILDAN M ATHOILLAH
 */

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

import com.squareup.picasso.Picasso;
import com.theartofdev.edmodo.cropper.CropImage;

public class MainActivity extends AppCompatActivity{

    //Deklarasi Variable
    private Button ChooseImage;
    private ImageView Image;

    //Kode Permintaan untuk mengambil gambar dari Galeri
    private int REQUEST_CODE_GALLERY = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Image = findViewById(R.id.myPicture);
        ChooseImage = findViewById(R.id.choose_image);
        ChooseImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                addImage();
            }
        });
    }

    //Mengambil gambar dari Galeri
    private void addImage() {
        Intent galleryIntent = new Intent();
        galleryIntent.setType("image/*");
        galleryIntent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(galleryIntent, "SELECT IMAGE"), REQUEST_CODE_GALLERY);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        //Mengarahkan user pada halaman Cropping Image
        if(requestCode == REQUEST_CODE_GALLERY && resultCode == RESULT_OK){
            Uri imageUri = data.getData();
            CropImage.activity(imageUri)
                    .setAspectRatio(1,1)
                    .start(this);
        }

        //Menampilkan Gambar hasil Cropping Image
        if(requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
            CropImage.ActivityResult result = CropImage.getActivityResult(data);
            if (resultCode == RESULT_OK) {
                Uri imageUri = result.getUri(); //Mengubah data image kedalam Uri

                //Menampilkan Gambar pada ImageView
                Picasso.get().load(imageUri).into(Image);

            }else if(requestCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE){
                //Menangani Jika terjadi kesalahan
                String error = result.getError().toString();
                Log.d("Exception", error);
                Toast.makeText(getApplicationContext(), "Crop Image Error", Toast.LENGTH_SHORT).show();
            }
        }
    }
}
Demo:



Sekian dari saya, mohon maaf bila ada kesalahan, jika ada yang ingin ditanyaka, silakan isi kolom komentar dibawah ini.

Wassalamualaikum Warahmatullahi Wabarakatuh.

Wildan M Athoillah
Wildan M Athoillah Blogger dan spesialis pembuat aplikasi android.