Select Image From Gallary ทำไงดี?
สวัสดีครับ วันนี้เราจะมาเรียนรู้ในเรื่องการเลือก Image จากอัลบัมมาใส่ใน ImageView ในการทำโปรไฟล์ของผู้ใช้ เรามาดูว่ามีวิธีการในการเขียนโค้ดยังไง ลองดูครับ
เปิดไฟล์ layout/activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.geekcreator.MainActivity">
<ImageView
android:id="@+id/image_view"
android:layout_width="200dp"
android:layout_height="200dp"
/>
</RelativeLayout>
เปิดไฟล์ java/MainActivity.java
public class MainActivity extends AppCompatActivity {
private static int RESULT_LOAD_IMAGE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView imageView = (ImageView)findViewById(R.id.image_view );
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(
Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, RESULT_LOAD_IMAGE);
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getApplicationContext().getContentResolver().query(selectedImage,
filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
ImageView imageView = (ImageView) findViewById(R.id.image_view);
Bitmap bmp = null;
try {
bmp = getBitmapFromUri(selectedImage);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
imageView.setImageBitmap(bmp);
}
}
private Bitmap getBitmapFromUri(Uri uri) throws IOException {
ParcelFileDescriptor parcelFileDescriptor = getApplicationContext().getContentResolver().openFileDescriptor(uri, "r");
FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();
Bitmap image = BitmapFactory.decodeFileDescriptor(fileDescriptor);
parcelFileDescriptor.close();
return image;
}
}
ถ้าหากรูปที่เราเลือกมาจากอัลบัมมีขนานใหญ่จนเกินไป อาจจะทำให้แอปพลิชันของเราทำงานช้าได้จึงมีการแปลงขนานของรูปก็ที่จะเอาไปใส่ใน ImageView
public Bitmap getResizedBitmap(Bitmap bm,int H ,int W){
int width = bm.getWidth();
int height = bm.getHeight();
float scaleWidth = ((float)W)/width;
float scaleHeight = ((float)H)/height;
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth,scaleHeight);
Bitmap resizedBitmap = Bitmap.createBitmap(bm,0,0,width,height,matrix,false);
return resizedBitmap;
}
สำหรับวิธีการเลือกรูปจากอัลบัมก็ขอจบไว้เพียงเท่านี้หากมีข้อสงสัยสามารถคอมเมนต์ได้ที่โพสต์ด้านล่างเลยครับ วันนาี้คงต้องลาไปก่อนสวัสดีครับ



ความคิดเห็น
แสดงความคิดเห็น