استخدام مكتبة Picasso لتعديل الصور في الأندرويد برمجياً

بسم الله الرحمن الرحيم

في الدرس الماضي قمنا باستخدام دالة onActivityResult لجلب صورة من الاستوديو ووضعها في ImageView .. لكن هناك طريقة أسهل لفعل ذلك باستخدام مكتبة بيكاسو Picasso لأنك بسطر واحد سوف تستطيع وضع الصورة في تطبيقك من خلال هذه المكتبة

تستطيع مراجعة الدرس الماضي من  هنا

في البداية عليك اضافة المكتبة إلى مشروعك … اضغط على Gradle Scripts سوف تجد ملفين باسم build.gradle أحدهم يحتوي بين القوسين على Module : app قم بالضغط عليه

اخر أسطر هذا الملف بداخل dependencies قم بإضافة هذا الكود :

بعد ذلك ستظهر كلمة sync nowفي الأعلى قم بالضغط عليها وانتظر حتى ينتهي التزامن

اذا انتهى التزامن بدون أي أخطاء فهذا يعني بأن المكتبة تمت اضافتها بنجاح !

والآن في داخل دالة onActivityResult امسح الأكواد الموجودة لتصبح هكذا :

بعدها ضع الكود التالي :

من خلال كلاس picasso  استدعينا :

with:  تأخذ باراميتر واحد وهو الكونتكس وسنضع this للإشارة إلى الاكتيفيتي الحالية

load : هنا سوف نضع  ال Uri الخاص بالصورة (تستطيع وضع ملف File , أو صورة مخزنة في مشروعك resourceId , أو مسار الصورة String Path ,أو ال Uri)

into : هنا ضع في الباراميتر ال ImageView التي تريد وضع الصورة بداخله

قم بتشغيل البرنامج وجربه


 

طبعا الآن ستواجهك مشكلة حجم الصورة .. لكن لا تقلق فمكتبة بيكاسو ستساعدك على تغيير حجم الصورة بكل سهولة !

باستخدام resize :

باستخدام دالة resize فقط ضع العرض والطول الذي تريده وهي تحتوي على بارامترين الأول هو width والثاني height

بامكانك استخدامها اذا كنت قد اعطيت لل ImageView عرض وطول معين .. ثم تضع في دالة resize ضعف عرض ثم ضعف طول ال ImageView ثم قم باستدعاء دالة centerCrop .

مثال : قم بتغيير طول ال imageView إلى 100 و عرضها إلى 100 أيضا بعدها بدالة resize ضع في الباراميتر الأول 200 (ضعف العرض ) وفي الثاني 200 أيضا (ضعف الطول ) ثم دالة centerCrop

ليصبح الكود هكذا :

الان ستصبح الصورة بنفس حجم ال ImageView وبدقة جيدة

قمنا بمضاعفة الطول والعرض لكي نحصل على دقة أكبر ولاحظ أنك لو قمت بوضع عرض وطول الصورة نفسها سوف تكون الصورة بجودة منخفضة

centerCrop : تملئ ال ImageView بالكامل وتقوم بقص المساحة الزائدة .. وقد لا تعرض الصورة الكاملة اذا كانت كبيرة

الآن جرب تشغيل البرنامج واختر أي صورة من الاستديو وسوف تكون مناسبة لحجم ال ImageView


 

استخدام fit :

نستخدمها عندما لا نضع عرض وطول معين لل ImageView مثلا لو قمت بتعيين match_parent للطول والعرض .. فمن الافضل استخدام fit لأنها تقيس أبعاد ال ImageView وبعدها تغير حجم الصورة لتناسب أبعادها

قم بتشغيل البرنامج وسترى الصورة تتناسب مع ال ImageView


 

ملاحظة : لا تضع wrap_content لل ImageView اذا كنت تريد استخدام fit… استخدمها مع match_parent ولا تسى استدعاء centerCrop أو centerInside اذا قمت باستخدام fit… أو استخدم resize اذا قمت بتعيين حجم معين لل ImageView باستخدام وحدة قياس DP

centerInside: تعرض الصورة بالكامل ولكن لا تملئ ال ImageView كاملة


 

قلب الصورة rotate : 

rotate :  تقوم بإمالة الصورة حسب الدرجة المعطاة

مثلا

الصورة سوف تصبح مائلة بدرجة 90 …

بامكانك استكشاف الدوال الأخرى بنفسك لتتعرف على هذه المكتبة أكثر وسوف أقوم بالمزيد من الشروحات عن هذه المكتبة قريبا ان شاء الله

و السلام عليكم

عن Yaser Alosh

ياسر , من سوريا , أحب أن استخدم الحاسوب وأتعلم كل ما يتعلق به ,, بدأت بتعلم البرمجة , " كهواية " منذ بضعة أشهر , أعجبني مجال الأندرويد لأنه بسيط وسهل التعلم ثم بدأت بتعلم برمجة تطبيقاته , ولقد ساعدني موقع "اندرودي عربي " كثير في ذلك

شاهد أيضاً

تحميل ملف من السيرفر لجهازك الأندرويد برمجياً

بسم الله الرحمن الرحيم في هذه التدوينة إن شاء الله سوف نتعلم كيفية تحميل ملف …

4 تعليقات

  1. طيب فى حالة إنى أريد التحكم فى الحجم والمكان وتحريك الصوره ولكن ليس برمجيا … ولكن من خلال الهاتف .. هل سأستخدم نفس المكتبه ؟

    • أهلا Beko0 ,, هل يمكنك أن توضح ماذا تقصد ب “من خلال الهاتف ” ؟هل تعني تغيير حجم ال imageView عن طريق اللمس من المستخدم ؟

      • هذا هو المطلوب بالظبط … 1- سحب صوره أو أكثر من الاستوديو او الكاميرا
        2- تكبير وتصغير الصور عن طريق اللمس “كل صوره على حدى”
        3- تحريك الصوره عن طريق اللمس “كل صوره على حدى”
        وشكرا أخى Yaser Alosh

  2. انشأت مستعرض صور ولكني اريد ان اضيف اليه امكانية الكتابه علي الصوره او قص الصوره ولا اعرف كيف ؟

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

− 3 = 6