Docs and emoji picker and probably some other random app updates.

git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@4124 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
2023-01-14 22:27:35 +00:00
parent b8f54f324f
commit 9248dfd97e
9 changed files with 123 additions and 25 deletions

View File

@@ -61,7 +61,7 @@ class TfComposeElement extends LitElement {
preview.innerHTML = tfutils.markdown(text);
}
convert_to_webp(buffer, type) {
convert_to_format(buffer, type, mime_type) {
return new Promise(function(resolve, reject) {
let img = new Image();
img.onload = function() {
@@ -73,7 +73,7 @@ class TfComposeElement extends LitElement {
canvas.height = img.height * scale;
let context = canvas.getContext('2d');
context.drawImage(img, 0, 0, canvas.width, canvas.height);
let data_url = canvas.toDataURL('image/webp');
let data_url = canvas.toDataURL(mime_type);
let result = atob(data_url.split(',')[1]).split('').map(x => x.charCodeAt(0));
resolve(result);
}
@@ -92,8 +92,18 @@ class TfComposeElement extends LitElement {
let buffer = await file.arrayBuffer();
let type = file.type;
if (type.startsWith('image/')) {
buffer = await self.convert_to_webp(buffer, file.type);
type = 'image/webp';
let best_buffer;
let best_type;
for (let format of ['image/png', 'image/jpeg']) {
let test_buffer = await self.convert_to_format(buffer, file.type, format);
console.log(format, test_buffer.length);
if (!best_buffer || test_buffer.length < best_buffer.length) {
best_buffer = test_buffer;
best_type = format;
}
}
buffer = best_buffer;
type = best_type;
} else {
buffer = Array.from(new Uint8Array(buffer));
}