#352 higher quality thumbnails
This commit is contained in:
parent
e76e49a54b
commit
d224edfbcb
6 changed files with 12 additions and 5 deletions
|
@ -14,6 +14,7 @@ All notable changes to this project will be documented in this file.
|
|||
|
||||
### Changed
|
||||
|
||||
- higher quality thumbnails
|
||||
- upgraded Flutter to stable v3.3.7
|
||||
|
||||
### Fixed
|
||||
|
|
|
@ -19,10 +19,10 @@ import com.bumptech.glide.Glide
|
|||
import com.bumptech.glide.load.DecodeFormat
|
||||
import com.bumptech.glide.request.RequestOptions
|
||||
import deckers.thibault.aves.MainActivity
|
||||
import deckers.thibault.aves.MainActivity.Companion.EXTRA_STRING_ARRAY_SEPARATOR
|
||||
import deckers.thibault.aves.MainActivity.Companion.EXTRA_KEY_FILTERS_ARRAY
|
||||
import deckers.thibault.aves.MainActivity.Companion.EXTRA_KEY_FILTERS_STRING
|
||||
import deckers.thibault.aves.MainActivity.Companion.EXTRA_KEY_PAGE
|
||||
import deckers.thibault.aves.MainActivity.Companion.EXTRA_STRING_ARRAY_SEPARATOR
|
||||
import deckers.thibault.aves.R
|
||||
import deckers.thibault.aves.channel.calls.Coresult.Companion.safe
|
||||
import deckers.thibault.aves.channel.calls.Coresult.Companion.safeSuspend
|
||||
|
@ -159,7 +159,7 @@ class AppAdapterHandler(private val context: Context) : MethodCallHandler {
|
|||
.build()
|
||||
|
||||
val options = RequestOptions()
|
||||
.format(DecodeFormat.PREFER_RGB_565)
|
||||
.format(DecodeFormat.PREFER_ARGB_8888)
|
||||
.override(size, size)
|
||||
val target = Glide.with(context)
|
||||
.asBitmap()
|
||||
|
|
|
@ -42,8 +42,9 @@ class MediaFetchBytesHandler(private val context: Context) : MethodCallHandler {
|
|||
val heightDip = call.argument<Number>("heightDip")?.toDouble()
|
||||
val pageId = call.argument<Int>("pageId")
|
||||
val defaultSizeDip = call.argument<Number>("defaultSizeDip")?.toDouble()
|
||||
val quality = call.argument<Int>("quality")
|
||||
|
||||
if (uri == null || mimeType == null || dateModifiedSecs == null || rotationDegrees == null || isFlipped == null || widthDip == null || heightDip == null || defaultSizeDip == null) {
|
||||
if (uri == null || mimeType == null || dateModifiedSecs == null || rotationDegrees == null || isFlipped == null || widthDip == null || heightDip == null || defaultSizeDip == null || quality == null) {
|
||||
result.error("getThumbnail-args", "missing arguments", null)
|
||||
return
|
||||
}
|
||||
|
@ -60,6 +61,7 @@ class MediaFetchBytesHandler(private val context: Context) : MethodCallHandler {
|
|||
height = (heightDip * density).roundToInt(),
|
||||
pageId = pageId,
|
||||
defaultSize = (defaultSizeDip * density).roundToInt(),
|
||||
quality = quality,
|
||||
result = result,
|
||||
).fetch()
|
||||
}
|
||||
|
|
|
@ -39,6 +39,7 @@ class ThumbnailFetcher internal constructor(
|
|||
height: Int?,
|
||||
private val pageId: Int?,
|
||||
private val defaultSize: Int,
|
||||
private val quality: Int,
|
||||
private val result: MethodChannel.Result,
|
||||
) {
|
||||
private val uri: Uri = Uri.parse(uri)
|
||||
|
@ -79,7 +80,7 @@ class ThumbnailFetcher internal constructor(
|
|||
}
|
||||
|
||||
if (bitmap != null) {
|
||||
result.success(bitmap.getBytes(MimeTypes.canHaveAlpha(mimeType), recycle = false))
|
||||
result.success(bitmap.getBytes(MimeTypes.canHaveAlpha(mimeType), recycle = false, quality = quality))
|
||||
} else {
|
||||
var errorDetails: String? = exception?.message
|
||||
if (errorDetails?.isNotEmpty() == true) {
|
||||
|
@ -119,7 +120,7 @@ class ThumbnailFetcher internal constructor(
|
|||
private fun getByGlide(): Bitmap? {
|
||||
// add signature to ignore cache for images which got modified but kept the same URI
|
||||
var options = RequestOptions()
|
||||
.format(DecodeFormat.PREFER_RGB_565)
|
||||
.format(if (quality == 100) DecodeFormat.PREFER_ARGB_8888 else DecodeFormat.PREFER_RGB_565)
|
||||
.signature(ObjectKey("$dateModifiedSecs-$rotationDegrees-$isFlipped-$width-$pageId"))
|
||||
.override(width, height)
|
||||
|
||||
|
|
|
@ -227,6 +227,7 @@ class PlatformMediaFetchService implements MediaFetchService {
|
|||
'heightDip': extent,
|
||||
'pageId': pageId,
|
||||
'defaultSizeDip': _thumbnailDefaultSize,
|
||||
'quality': 100,
|
||||
});
|
||||
if (result != null) return result as Uint8List;
|
||||
} on PlatformException catch (e, stack) {
|
||||
|
|
|
@ -3,6 +3,7 @@ import 'dart:io';
|
|||
|
||||
import 'package:aves/app_flavor.dart';
|
||||
import 'package:aves/flutter_version.dart';
|
||||
import 'package:aves/model/device.dart';
|
||||
import 'package:aves/model/settings/enums/enums.dart';
|
||||
import 'package:aves/model/settings/settings.dart';
|
||||
import 'package:aves/ref/mime_types.dart';
|
||||
|
@ -149,6 +150,7 @@ class _BugReportState extends State<BugReport> with FeedbackMixin {
|
|||
'Android version: ${androidInfo.version.release} (SDK ${androidInfo.version.sdkInt})',
|
||||
'Android build: ${androidInfo.display}',
|
||||
'Device: ${androidInfo.manufacturer} ${androidInfo.model}',
|
||||
'Geocoder: ${device.hasGeocoder ? 'ready' : 'not available'}',
|
||||
'Mobile services: ${mobileServices.isServiceAvailable ? 'ready' : 'not available'}',
|
||||
'System locales: ${WidgetsBinding.instance.window.locales.join(', ')}',
|
||||
'Aves locale: ${settings.locale ?? 'system'} -> ${settings.appliedLocale}',
|
||||
|
|
Loading…
Reference in a new issue