Photo: Scale down an image for a local message thumbnail (#3423)

This commit is contained in:
Alexander Zinchuk 2023-07-05 13:14:30 +02:00
parent 18bfe2bd96
commit 193a0c60f8
2 changed files with 10 additions and 2 deletions

View File

@ -1439,7 +1439,7 @@ function buildUploadingMedia(
photo: {
id: LOCAL_MEDIA_UPLOADING_TEMP_ID,
sizes: [],
thumbnail: { width, height, dataUri: blobUrl },
thumbnail: { width, height, dataUri: previewBlobUrl || blobUrl },
blobUrl,
isSpoiler: shouldSendAsSpoiler,
},

View File

@ -14,6 +14,7 @@ import {
import { scaleImage } from '../../../../util/imageResize';
const MAX_QUICK_IMG_SIZE = 1280; // px
const MAX_THUMB_IMG_SIZE = 40; // px
const MAX_ASPECT_RATIO = 20;
const FILE_EXT_REGEX = /\.[^/.]+$/;
@ -53,7 +54,14 @@ export default async function buildAttachment(
quick = { width, height };
}
previewBlobUrl = blobUrl;
const shouldShrinkPreview = Math.max(width, height) > MAX_THUMB_IMG_SIZE;
if (shouldShrinkPreview) {
previewBlobUrl = await scaleImage(
blobUrl, MAX_THUMB_IMG_SIZE / Math.max(width, height), 'image/jpeg',
);
} else {
previewBlobUrl = blobUrl;
}
} else if (SUPPORTED_VIDEO_CONTENT_TYPES.has(mimeType)) {
const { videoWidth: width, videoHeight: height, duration } = await preloadVideo(blobUrl);
shouldSendAsFile = !validateAspectRatio(width, height);