Merge branch 'matrixfiles-fix-thumbnails' into 'master'

[MatrixFile] Fix thumbnail encoding

See merge request famedly/famedlysdk!264
This commit is contained in:
Christian Pauly 2020-04-23 08:18:34 +00:00
commit 1a94d7d145
3 changed files with 7 additions and 5 deletions

View file

@ -488,7 +488,7 @@ class Client {
/// Uploads a new user avatar for this user.
Future<void> setAvatar(MatrixFile file) async {
await file.resize(width: 128);
await file.resize(width: Client.defaultThumbnailSize);
final uploadResp = await upload(file);
await jsonRequest(
type: HTTPType.PUT,
@ -557,6 +557,7 @@ class Client {
static const List<String> supportedGroupEncryptionAlgorithms = [
'm.megolm.v1.aes-sha2'
];
static const int defaultThumbnailSize = 256;
http.Client httpClient = http.Client();

View file

@ -503,10 +503,10 @@ class Room {
if (msgType == 'm.image') {
var thumbnailPathParts = file.path.split('/');
thumbnailPathParts.last = 'thumbnail_' + thumbnailPathParts.last;
thumbnailPathParts.last = 'thumbnail_' + thumbnailPathParts.last + '.jpg';
final thumbnailPath = thumbnailPathParts.join('/');
thumbnail = MatrixFile(bytes: file.bytes, path: thumbnailPath);
await thumbnail.resize(width: 512);
await thumbnail.resize(width: Client.defaultThumbnailSize);
fileImage = decodeImage(file.bytes.toList());
thumbnailImage = decodeImage(thumbnail.bytes.toList());
}
@ -1250,7 +1250,7 @@ class Room {
/// Uploads a new user avatar for this room. Returns the event ID of the new
/// m.room.avatar event.
Future<String> setAvatar(MatrixFile file) async {
await file.resize(width: 256);
await file.resize(width: Client.defaultThumbnailSize);
final uploadResp = await client.upload(file);
final setAvatarResp = await client.jsonRequest(
type: HTTPType.PUT,

View file

@ -12,6 +12,7 @@ class MatrixFile {
/// If this file is an Image, this will resize it to the
/// given width and height. Otherwise returns false.
/// At least width or height must be set!
/// The bytes will be encoded as jpg.
Future<bool> resize({int width, int height}) async {
if (width == null && height == null) {
throw ('At least width or height must be set!');
@ -23,7 +24,7 @@ class MatrixFile {
return false;
}
final resizedImage = copyResize(image, width: width, height: height);
bytes = encodePng(resizedImage);
bytes = encodeJpg(resizedImage, quality: 10);
return true;
}