لتحقيق هذا المطلوب، يجب أن تقوم بتحديد نقطة القص داخل الصورة المحملة، ثم قم بقصها وتعيين الصورة المقصوصة على ImageView
. هناك طرق عديدة لتحقيق هذا، وإليك طريقة بسيطة باستخدام مكتبة android-crop
:
أولاً، قم بإضافة تبعية مكتبة android-crop
إلى ملف build.gradle
الخاص بمشروعك:
gradledependencies { implementation 'com.soundcloud.android:android-crop:1.0.1@aar' }
ثانياً، في دالة onActivityResult
بعد تحديد الصورة، قم بفتح نافذة القص باستخدام CropImage.activity()
:
java@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
Uri filePath = data.getData();
try {
bitmap_one = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath);
// Open crop activity
CropImage.activity(filePath)
.setGuidelines(CropImageView.Guidelines.ON)
.setAspectRatio(1, 1) // Aspect ratio 1:1 for square crop
.start(this);
} catch (IOException e) {
e.printStackTrace();
}
} else if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
// Get cropped image result
CropImage.ActivityResult result = CropImage.getActivityResult(data);
if (resultCode == RESULT_OK) {
Uri resultUri = result.getUri();
try {
bitmap_one = MediaStore.Images.Media.getBitmap(getContentResolver(), resultUri);
pfp.setImageBitmap(bitmap_one);
} catch (IOException e) {
e.printStackTrace();
}
} else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
Exception error = result.getError();
error.printStackTrace();
}
}
}
هذا يجعل التطبيق يقوم بفتح نافذة القص عند النقر على الصورة، يمكنك قص الصورة إلى شكل مربع ثم تعيينها على ImageView
بعد الانتهاء.
المزيد من المعلومات
بالطبع! مكتبة android-crop
توفر العديد من الخيارات لتخصيص عملية القص، بما في ذلك:
-
تحديد نسبة العرض إلى الارتفاع للصورة المقصوصة باستخدام
setAspectRatio()
، مما يتيح لك تحديد النسبة المطلوبة مثل 16:9 أو 4:3 أو أي نسبة أخرى. -
تحديد الحدود والشبكة التوجيهية للمساعدة في تحديد منطقة القص باستخدام
setGuidelines()
. -
إمكانية تعيين حجم الصورة النهائية المقصوصة باستخدام
setMaxCropResultSize()
، وهذا يساعد في تحديد دقة الصورة النهائية. -
دعم العديد من تنسيقات الصور المدعومة، مثل JPEG، PNG، وغيرها.
-
إمكانية تعيين الجودة المطلوبة للصورة النهائية باستخدام
setOutputCompressQuality()
. -
إمكانية تحديد مكان حفظ الصورة المقصوصة باستخدام
setOutputUri()
. -
دعم تدوير الصورة قبل القص باستخدام
setInitialRotation()
. -
إمكانية تخصيص ألوان وأشكال وأحجام عناصر واجهة المستخدم باستخدام
setCropShape()
،setBorderLineColor()
،setBorderLineThickness()
، وغيرها.
هذه الخيارات تجعل من السهل تخصيص عملية القص وفقًا لاحتياجات تطبيقك ومتطلبات التصميم.