@@ -814,9 +814,9 @@ function addOneMessage(mes, type = "normal") {
avatarImg = system_avatar;
} else {
if (characters[this_chid].avatar != "none") {
- avatarImg = "characters/" + characters[this_chid].avatar;
+ avatarImg = `/thumbnail?type=avatar&file=${encodeURIComponent(characters[this_chid].avatar)}`;
if (is_mes_reload_avatar !== false) {
- avatarImg += "?" + is_mes_reload_avatar;
+ avatarImg += "&" + is_mes_reload_avatar;
}
} else {
avatarImg = default_avatar;
@@ -2546,7 +2546,7 @@ function select_selected_character(chid) {
//$("#avatar_div").css("display", "none");
var this_avatar = default_avatar;
if (characters[chid].avatar != "none") {
- this_avatar = "characters/" + characters[chid].avatar;
+ this_avatar = "characters/" + encodeURIComponent(characters[chid].avatar);
}
$("#avatar_load_preview").attr("src", this_avatar + "?" + Date.now());
$("#name_div").css("display", "none");
@@ -2698,7 +2698,7 @@ function read_bg_load(input) {
"url(" + e.target.result + ")"
);
$("#form_bg_download").after(
- `
+ `
`
);
diff --git a/public/scripts/group-chats.js b/public/scripts/group-chats.js
index a2e36d9d7..b2d73756e 100644
--- a/public/scripts/group-chats.js
+++ b/public/scripts/group-chats.js
@@ -126,7 +126,7 @@ async function getGroupChat(id) {
: default_ch_mes;
mes["force_avatar"] =
character.avatar != "none"
- ? `characters/${character.avatar}?${Date.now()}`
+ ? `/thumbnail?type=avatar&file=${encodeURIComponent(character.avatar)}&${Date.now()}`
: default_avatar;
chat.push(mes);
addOneMessage(mes);
@@ -201,7 +201,7 @@ function getGroupAvatar(group) {
for (const member of group.members) {
const charIndex = characters.findIndex((x) => x.name === member);
if (charIndex !== -1 && characters[charIndex].avatar !== "none") {
- const avatar = `characters/${characters[charIndex].avatar}#${Date.now()}`;
+ const avatar = `/thumbnail?type=avatar&file=${encodeURIComponent(characters[charIndex].avatar)}&${Date.now()}`;
memberAvatars.push(avatar);
}
if (memberAvatars.length === 4) {
@@ -533,7 +533,7 @@ function select_group_chats(chat_id) {
for (let character of characters) {
const avatar =
character.avatar != "none"
- ? `characters/${character.avatar}#${Date.now()}`
+ ? `/thumbnail?type=avatar&file=${encodeURIComponent(character.avatar)}&${Date.now()}`
: default_avatar;
const template = $("#group_member_template .group_member").clone();
template.data("id", character.name);
diff --git a/server.js b/server.js
index 3e5c3aaf6..b7d597822 100644
--- a/server.js
+++ b/server.js
@@ -622,6 +622,7 @@ app.post("/editcharacter", urlencodedParser, async function (request, response)
img_path = "uploads/";
img_file = filedata.filename;
+ invalidateThumbnail('avatar', request.body.avatar_url);
await charaWrite(img_path + img_file, char, target_img, response, 'Character saved');
//response.send('Character saved');
}
@@ -646,6 +647,7 @@ app.post("/deletecharacter", urlencodedParser, function (request, response) {
}
fs.rmSync(avatarPath);
+ invalidateThumbnail('avatar', request.body.avatar_url);
let dir_name = (request.body.avatar_url.replace('.png', ''));
if (dir_name !== sanitize(dir_name)) {
@@ -1722,11 +1724,11 @@ async function generateThumbnail(type, file) {
return null;
}
- const imageSizes = { 'bg': [160, 90], 'avatar': [42, 42] };
+ const imageSizes = { 'bg': [160, 90], 'avatar': [48, 48] };
const mySize = imageSizes[type];
const image = await jimp.read(pathToOriginalFile);
- await image.cover(mySize[0], mySize[1]).quality(60).writeAsync(pathToCachedFile);
+ await image.cover(mySize[0], mySize[1]).quality(95).writeAsync(pathToCachedFile);
return pathToCachedFile;
}