This commit is contained in:
gdlbo
2024-03-07 18:05:20 +03:00
parent 4bbcde750a
commit 305614dae6
4 changed files with 30 additions and 51 deletions
@@ -24,10 +24,6 @@ public class MediaImageEncoder {
return compressBitmap(bitmap, file, CompressFormat.JPEG, quality);
}
private static boolean compressBitmapLossless(Bitmap bitmap, File file) {
return compressBitmap(bitmap, file, CompressFormat.PNG, 100);
}
private static boolean compressBitmapNative(Bitmap bitmap, File file, int quality) {
if (MediaNative.isX86() || MediaNative.isAsus() || Build.VERSION.SDK_INT < 24) {
Log.e(MediaImageEncoder.class.getSimpleName(), "JPEG turbo not supported on this device!");
@@ -37,7 +33,7 @@ public class MediaImageEncoder {
byte[] jpegData = MediaNative.compressBitmapJpeg(bitmap, quality);
if (jpegData == null) {
return false;
return compressBitmapJpeg(bitmap, file, quality);
}
try (FileOutputStream fileOutputStream = new FileOutputStream(file)) {
@@ -51,43 +47,29 @@ public class MediaImageEncoder {
public static boolean encodePicture(Bitmap bitmap, File file, int quality) {
if (bitmap != null && !bitmap.isRecycled() && bitmap.getWidth() * bitmap.getHeight() != 0) {
switch (Preferences.getPreferences().getString("compression", "jpeg")) {
case "skip" -> {
return compressBitmapLossless(bitmap, file);
}
case "jpeg" -> {
return compressBitmapJpeg(bitmap, file, quality);
}
case "native" -> {
return compressBitmapNative(bitmap, file, quality);
}
}
}
return false;
}
public static boolean needToSkipCompression() {
return Preferences.getPreferences().getString("compression", "jpeg").equals("skip");
}
public static boolean needToCompress() {
return !needToSkipCompression();
}
public static boolean encodeJpeg(Bitmap bitmap, File file) {
return encodePicture(bitmap, file, 90);
}
public static boolean encodeJpegWithoutCompression(Bitmap bitmap, File file) {
return encodePicture(bitmap, file, 95);
}
public static boolean encodeJpeg(Bitmap bitmap, File file, int quality) {
if (bitmap != null && !bitmap.isRecycled() && bitmap.getWidth() * bitmap.getHeight() != 0) {
return needToCompress() ? compressBitmapNative(bitmap, file, quality) : compressBitmapJpeg(bitmap, file, quality);
return compressBitmapNative(bitmap, file, quality);
} else {
return false;
}
}
}
public static boolean needToSkipCompression() {
return !Preferences.getPreferences().getBoolean("compressPhotos", true);
}
public static boolean encodeJpeg(Bitmap bitmap, File file) {
return encodePicture(bitmap, file, Preferences.compress(90));
}
public static boolean encodeJpegWithoutCompression(Bitmap bitmap, File file) {
return encodePicture(bitmap, file, 100);
}
public static boolean encodeJpeg(Bitmap bitmap, File file, int quality) {
if (bitmap != null && !bitmap.isRecycled() && bitmap.getWidth() * bitmap.getHeight() != 0) {
return compressBitmapNative(bitmap, file, quality);
} else {
return false;
}
}
}
@@ -356,7 +356,6 @@ public class Preferences {
}
public static int compress(int origquality) {
if (MediaImageEncoder.needToSkipCompression()) return 100;
return origquality;
return MediaImageEncoder.needToSkipCompression() ? 100 : origquality;
}
}
@@ -464,7 +464,7 @@ public class VTSettings extends TrackedMaterialPreferenceToolbarFragment {
getPreferenceScreen(),
"",
requireContext().getString(R.string.vtlmedia),
getValAsString(R.string.sett_compress_photos, MediaImageEncoder.needToCompress()),
getValAsString(R.string.sett_compress_photos, MediaImageEncoder.needToSkipCompression()),
R.drawable.ic_media_outline_28,
preference -> {
NavigatorUtils.switchFragment(requireContext(), MediaFragment.class);
+5 -7
View File
@@ -1,18 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="@string/sett_media">
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="true"
android:key="compressPhotos"
android:summary="@string/sett_compress_photo_summ"
android:title="@string/sett_compress_photos" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="true"
android:key="compressVideos"
android:summary="@string/sett_compress_video_summ"
android:title="@string/sett_compress_videos"/>
<com.vtosters.lite.ui.SummaryListPreference
android:defaultValue="jpeg"
android:dialogTitle="@string/compression_types_selection"
android:entries="@array/compression_value"
android:entryValues="@array/compression"
android:key="compression"
android:title="@string/compression_types"/>
</PreferenceCategory>
<PreferenceCategory android:title="@string/vtl_video_settings">
<Preference