fix #1581
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user