update op imgs
Před Šířka: | Výška: | Velikost: 0 B Za Šířka: | Výška: | Velikost: 731 KiB |
Před Šířka: | Výška: | Velikost: 0 B Za Šířka: | Výška: | Velikost: 30 KiB |
Před Šířka: | Výška: | Velikost: 0 B Za Šířka: | Výška: | Velikost: 276 KiB |
Před Šířka: | Výška: | Velikost: 0 B Za Šířka: | Výška: | Velikost: 134 KiB |
Před Šířka: | Výška: | Velikost: 0 B Za Šířka: | Výška: | Velikost: 116 KiB |
Před Šířka: | Výška: | Velikost: 0 B Za Šířka: | Výška: | Velikost: 117 KiB |
|
@ -1,6 +1,6 @@
|
|||
name = "blockWise"
|
||||
description = "Newsletter a vzdelávanie o krypte, web3, metaverse, AR"
|
||||
logo = "logo.png"
|
||||
logo = "logo.webp"
|
||||
languages = ["slovak"]
|
||||
|
||||
[links]
|
||||
|
|
Za Šířka: | Výška: | Velikost: 3.7 KiB |
Za Šířka: | Výška: | Velikost: 3.7 KiB |
|
@ -1,6 +1,6 @@
|
|||
name = "Crypto Nomads Club"
|
||||
description = "A community for crypto nomads"
|
||||
logo = "logo.png"
|
||||
logo = "logo.webp"
|
||||
languages = ["english"]
|
||||
|
||||
[links]
|
||||
|
|
Za Šířka: | Výška: | Velikost: 6.4 KiB |
Za Šířka: | Výška: | Velikost: 6.4 KiB |
|
@ -1,6 +1,6 @@
|
|||
name = "Holky v kryptu"
|
||||
description = "Dívčí kryptokomunita"
|
||||
logo = "logo.svg"
|
||||
logo = "logo.webp"
|
||||
languages = ["czech"]
|
||||
|
||||
[links]
|
||||
|
|
Za Šířka: | Výška: | Velikost: 13 KiB |
Za Šířka: | Výška: | Velikost: 13 KiB |
|
@ -1,6 +1,6 @@
|
|||
name = "KryptomagazinCZ"
|
||||
description = "Zpravodajský portál o kryptoměnách"
|
||||
logo = "logo.jpg"
|
||||
logo = "logo.webp"
|
||||
languages = ["czech"]
|
||||
|
||||
[links]
|
||||
|
|
Za Šířka: | Výška: | Velikost: 5.0 KiB |
Za Šířka: | Výška: | Velikost: 5.0 KiB |
|
@ -1,5 +1,5 @@
|
|||
name = "KryptoSpace"
|
||||
logo = "logo.jpg"
|
||||
logo = "logo.webp"
|
||||
description = "Podcast Petra Lukáče je váš průvodce světem kryptoměn"
|
||||
languages = ["czech"]
|
||||
|
||||
|
|
Za Šířka: | Výška: | Velikost: 7.3 KiB |
Za Šířka: | Výška: | Velikost: 7.3 KiB |
|
@ -1,7 +1,7 @@
|
|||
name = "NFT Space"
|
||||
description = "Novinky a vzdělávací články z NFT, Web3 a Metaverse"
|
||||
languages = ["czech"]
|
||||
logo = "logo.jpg"
|
||||
logo = "logo.webp"
|
||||
|
||||
[links]
|
||||
web = "https://www.nftspace.cz/"
|
||||
|
|
Za Šířka: | Výška: | Velikost: 2.8 KiB |
Za Šířka: | Výška: | Velikost: 2.8 KiB |
|
@ -1,7 +1,7 @@
|
|||
name = "Paralelní Polis"
|
||||
description = "art - science - technology"
|
||||
languages = ["english"]
|
||||
logo = "logo.png"
|
||||
logo = "logo.webp"
|
||||
|
||||
[links]
|
||||
web = "https://www.paralelnipolis.cz/"
|
||||
|
|
Za Šířka: | Výška: | Velikost: 16 KiB |
Za Šířka: | Výška: | Velikost: 16 KiB |
|
@ -284,17 +284,31 @@ class DeConf_Collection {
|
|||
const src = [this.dir, fn].join("/");
|
||||
const extname = posix.extname(src);
|
||||
const dest = [this.dir, fn.replace(/\.([^\.]+)$/, ".op.webp")].join("/");
|
||||
//console.log({src, dest})
|
||||
if (await exists(dest)) {
|
||||
return null;
|
||||
if (!await exists(dest)) {
|
||||
if (extname === ".webp") {
|
||||
await _fileCopy(src, dest);
|
||||
console.log(`${dest} copied`);
|
||||
return true;
|
||||
}
|
||||
await _imageOptimalizedWrite(src, dest);
|
||||
console.log(`${dest} writed`);
|
||||
}
|
||||
if (extname === ".webp") {
|
||||
await _fileCopy(src, dest);
|
||||
console.log(`${dest} copied`);
|
||||
return true;
|
||||
const info = await _imageWebPInfo(dest)
|
||||
if (!info) {
|
||||
return null
|
||||
}
|
||||
const ratio = info.width/info.height
|
||||
const sizes = [150, 300, 500];
|
||||
for (const sz of sizes) {
|
||||
const cheight = Math.round(sz / ratio)
|
||||
//console.log(info.width, info.height, ratio, sz, cheight)
|
||||
continue
|
||||
const szDest = [this.dir, fn.replace(/\.([^\.]+)$/, `-${sz}px.op.webp`)].join("/")
|
||||
if (!await exists(szDest)) {
|
||||
await _imageOptimalizedWrite(dest, szDest, [sz, sz]);
|
||||
console.log(`${szDest} writed`);
|
||||
}
|
||||
}
|
||||
await _imageOptimalizedWrite(src, dest);
|
||||
console.log(`${dest} writed`);
|
||||
}
|
||||
|
||||
async sync() {
|
||||
|
@ -333,11 +347,6 @@ class DeConf_Collection {
|
|||
//await _imageOptimalizedWrite(tmpfile, fn);
|
||||
console.log(`${fn} writed`);
|
||||
|
||||
/*const sizes = [150, 300, 500];
|
||||
for (const sz of sizes) {
|
||||
console;
|
||||
}*/
|
||||
|
||||
sp.photo = ["photos", "speakers", ffn].join("/");
|
||||
}
|
||||
}
|
||||
|
@ -402,19 +411,31 @@ class DeConf_Collection {
|
|||
}
|
||||
}
|
||||
|
||||
async function _imageWebPInfo(src) {
|
||||
const p = Deno.run({ cmd: ["webpinfo", src], stdout: "piped", stderr: "piped" })
|
||||
await p.status();
|
||||
const info = new TextDecoder().decode(await p.output())
|
||||
if (!info.trim()) {
|
||||
console.log(src)
|
||||
return null
|
||||
}
|
||||
return {
|
||||
size: Number(info.match(/File size:\s+(\d+)/)[1]),
|
||||
width: Number(info.match(/Width: (\d+)/)[1]),
|
||||
height: Number(info.match(/Height: (\d+)/)[1])
|
||||
}
|
||||
}
|
||||
|
||||
async function _imageOptimalizedWrite(src, dest, resize = null) {
|
||||
const cmd = [
|
||||
"cwebp",
|
||||
...[resize ? resize : null],
|
||||
...(resize ? ["-resize", resize[0], resize[1]] : []),
|
||||
"-q",
|
||||
"80",
|
||||
src,
|
||||
"-o",
|
||||
dest,
|
||||
];
|
||||
if (resize) {
|
||||
cmd.push(`-resize ${resize}`);
|
||||
}
|
||||
const p = Deno.run({ cmd, stdout: "piped", stderr: "piped" });
|
||||
await p.status();
|
||||
console.log(new TextDecoder().decode(await p.stderrOutput()));
|
||||
|
|