فشرده سازی تصاویر در برنامه نویسی اندروید با کتابخانه zetbaitsu/Compressor
فشردهسازی تصاویر گرچه بدون استفاد از کتابخانه نیز ممکن است، ولی طبیعتا فشردهسازی عادی ممکن است از کیفیت تصاویر به شدت بکاهد؛ که در این زمینه، کتابخانه فشردهسازی سبک و قدرتمند zetbaitsu/Compressor، راه حلی جدید برای انجام این کار است.
Compressor به شما اجازه میدهد تا تصاویر بزرگ را بدون از دست دادن کیفیت زیاد، کمحجم کرده و مورد استفاده قرار دهید.
فراخوانی Compressor
به فایل gradle خود رفته و کتابخانه را اضافه کنید:
dependencies { implementation 'id.zelory:compressor:2.1.0' }
روش استفاده در کد
از دستور زیر، برای فشردهسازی یک فایل تصویری استفاده کنید:
compressedImageFile = new Compressor(this).compressToFile(actualImageFile);
دستور زیر نیز برای فشردهسازی فایل به Bitmap مورد استفاده قرار میگیرد:
compressedImageBitmap = new Compressor(this).compressToBitmap(actualImageFile);
موارد بالا، از تنظیمات پیشفرض جهت فشردهسازی استفاده میکنند که شما برای خود میتوانید شخصیسازیهای دلخواهتان را نیز انجام دهید:
compressedImage = new Compressor(this) .setMaxWidth(640) .setMaxHeight(480) .setQuality(75) .setCompressFormat(Bitmap.CompressFormat.WEBP) .setDestinationDirectoryPath(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES).getAbsolutePath()) .compressToFile(actualImage);
و اگر چنانچه بخواهید از قابلیت asynchronous جاوا استفاده کرده و فشرده سازی را به صورت asynchronously انجام دهید، میتوانید به صورت زیر عمل نمایید:
new Compressor(this) .compressToFileAsFlowable(actualImage) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<File>() { @Override public void accept(File file) { compressedImage = file; } }, new Consumer<Throwable>() { @Override public void accept(Throwable throwable) { throwable.printStackTrace(); showError(throwable.getMessage()); } });
نظرات ثبت شده بدون دیدگاه