Я пробую пакет NPM Canvas ("Node-Canvas"), чтобы нарисовать изображение внутри прямоугольника от node.js, но при снижении изображения становится Blinear/Blurry.
Я использую canvas@3.2.0 .
const iconPath = path.resolve(iconsBaseDirectory, icon.source);
const image = await loadImage(fs.readFileSync(iconPath));
for (const size of sizes) {
const canvas = createCanvas(size, size);
const ctx = canvas.getContext("2d");
ctx.imageSmoothingEnabled = true;
ctx.quality = "best";
if (icon.tile ?? true) {
const marginX = 3;
const marginY = 3;
const tileWidth = size - 2*marginX;
const tileHeight = size - 2*marginY;
ctx.fillStyle = icon.color ?? this.defaultColor;
ctx.fillRect(marginX, marginY, tileWidth, tileHeight);
const tileIconSize =
icon.size == "smaller" ? 0.6 :
icon.size == "extraSmaller" ? 0.4 : 0.8;
const tileIconWidth = tileWidth * tileIconSize;
const tileIconHeight = tileHeight * tileIconSize;
ctx.drawImage(image, marginX + tileWidth/2 - tileIconWidth/2, marginY + tileHeight/2 - tileIconHeight/2, tileIconWidth, tileIconHeight);
} else {
ctx.drawImage(image, 0, 0, size, size);
}
const buf = canvas.toBuffer("image/png");
for (const dest1 of icon.dest) {
const dest2 = path.resolve(outputDirectory, dest1.replace("{size}", size.toString()) + ".png");
const p = path.resolve(dest2, "..");
fs.mkdirSync(p, {
recursive: true,
});
fs.writeFileSync(dest2, buf);
}
}
Я пробовал другие альтернативы, такие как Sharp и Skia-canvas .
Подробнее здесь: https://stackoverflow.com/questions/797 ... downscaled
Узел-гнезды, Шрай и Скиа-Канвы, приводящие к размытому изображению при переполнении ⇐ Javascript
Форум по Javascript
1756729361
Anonymous
Я пробую пакет NPM Canvas ("Node-Canvas"), чтобы нарисовать изображение внутри прямоугольника от node.js, но при снижении изображения становится Blinear/Blurry.
Я использую canvas@3.2.0 .
const iconPath = path.resolve(iconsBaseDirectory, icon.source);
const image = await loadImage(fs.readFileSync(iconPath));
for (const size of sizes) {
const canvas = createCanvas(size, size);
const ctx = canvas.getContext("2d");
ctx.imageSmoothingEnabled = true;
ctx.quality = "best";
if (icon.tile ?? true) {
const marginX = 3;
const marginY = 3;
const tileWidth = size - 2*marginX;
const tileHeight = size - 2*marginY;
ctx.fillStyle = icon.color ?? this.defaultColor;
ctx.fillRect(marginX, marginY, tileWidth, tileHeight);
const tileIconSize =
icon.size == "smaller" ? 0.6 :
icon.size == "extraSmaller" ? 0.4 : 0.8;
const tileIconWidth = tileWidth * tileIconSize;
const tileIconHeight = tileHeight * tileIconSize;
ctx.drawImage(image, marginX + tileWidth/2 - tileIconWidth/2, marginY + tileHeight/2 - tileIconHeight/2, tileIconWidth, tileIconHeight);
} else {
ctx.drawImage(image, 0, 0, size, size);
}
const buf = canvas.toBuffer("image/png");
for (const dest1 of icon.dest) {
const dest2 = path.resolve(outputDirectory, dest1.replace("{size}", size.toString()) + ".png");
const p = path.resolve(dest2, "..");
fs.mkdirSync(p, {
recursive: true,
});
fs.writeFileSync(dest2, buf);
}
}
Я пробовал другие альтернативы, такие как Sharp и Skia-canvas .
Подробнее здесь: [url]https://stackoverflow.com/questions/79752504/node-canvas-sharp-and-skia-canvas-resulting-into-blurry-image-when-downscaled[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия