آموزش کتابخانه Glimpse در اندروید
سلام دوستان عزیز در این سری از آموزش برنامه نویسی اندروید به آموزش کتابخانه Glimpse در اندروید می پردازیم شاید بپرسید Glimpse چیست ؟ Glimpse یک کتابخانه به منظور برش آگاهانه عکس است شاید تا به حال پیش آماده باشد بخواهید بخشی از عکس را ببرید ولی برش به درستی انجام نشده باشد یا حتی بخشی از عکس شما از بین رفته باشد در ادامه با ما همراه باشید تا نحوه استفاده از این کتابخانه را یاد گیرید.
همانطور که در رابطه با کتابخانه Glimpse توضیح دادیم عمل cropping مربوط به عکس را هوشمندانه انجام می دهد در این کتابخانه از هوش مصنوعی برای تشخیص چهره یا شئی در عکس استفاده شده است. در ادامه یک نمونه از مثالی که زده شد را مشاهده می کنید.
در واقع کار اصلی این کتابخانه تشخیص شئی است و عمل برش بسته به شئی که وجود دارد انجام می شود.
ابتدا فایل Build.gradle را باز کرده و maven مربوط به آن را اضافه کنید.
1 2 3 4 5 | allprojects { repositories { maven { url "https://jitpack.io" } } } |
بعد از اینکار وارد فایل دوم گریدل خود شده (module) و خط های زیر را به آن اضافه کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | android { aaptOptions { noCompress "tflite" noCompress "lite" } defaultConfig { ndk { abiFilters 'armeabi-v7a', 'arm64-v8a' } } } dependencies { implementation 'com.github.the-super-toys.glimpse-android:glimpse-core:0.0.5' //only required for glide extensions implementation 'com.github.the-super-toys.glimpse-android:glimpse-glide:0.0.5' //only required for coil extensions implementation 'com.github.the-super-toys.glimpse-android:glimpse-coil:0.0.5' implementation 'org.tensorflow:tensorflow-lite:0.0.0-nightly' } |
این کتابخانه به زبان c++ نوشته شده است به همینطور منظور برای کامپایل آن نیاز به ndk دارید و در رابطه با کتابخانه های آن فقط شما به دو خط از بالا نیاز دارید بخش هایی که دارای کامنت است برای استفاده از کتابخانه با کتابخانه های دیگر است به عنوان مثال استفاده از این کتابخانه همراه با glide در صورتی که از glide یا coil برای لود عکس استفاده نمی کنید می توانید آنها را حذف کنید.
بعد از sync کردن باید این کتابخانه را init کنید مثل زیر
1 2 3 4 5 6 | class YourApp : Application() { override fun onCreate() { super.onCreate() Glimpse.init(this) } } |
init به معنی initialize کردن کتابخانه است.
بعد از اینکار باید عکس خود را به Bitmap تبدیل کرده و با استفاده از متد findCenter
وسط عکس را پیدا کنید.
1 2 | val original = (imageView.drawable as BitmapDrawable).bitmap val (x, y) = original.findCenter() |
بعد از اینکار عمل crop را همانند زیر انجام دهید.
1 2 | al cropped = original.crop(x, y, imageView.layoutParams.width, imageView.layoutParams.height) imageView.setImageBitmap(cropped) |
اگر می خواهید با استفاده از Glide عکس را لود و crop کنید می توانید از extension آن همانند زیر استفاده کنید.
1 2 3 4 5 | GlideApp.with(context) .load(url) .diskCacheStrategy(DiskCacheStrategy.RESOURCE) .transform(GlimpseTransformation()) .into(imageView) |
اگر می خواهید از کتابخانه Coil برای لود عکس استفاده کنید همانند زیر عمل کنید.
1 2 3 4 5 | imageView.load(url) { crossfade(true) placeholder(R.drawable.image) transformations(GlimpseTransformation()) } |
حجم پروژه با اضافه کردن این کتاب خانه حدودا 144 کیلوبایت هست که در زمینه خود فوق العاده است.
موفق و پیروز باشید.