@eshran

Как получить фотографию в рамке, как в ВК?

Привет всем!
Задался вопросом, как мне получить аватарку в таком виде? https://imgur.com/a/Fqr3Ype
Много что перепробовал, не получается :
  • Вопрос задан
  • 374 просмотра
Решения вопроса 1
@loonny
В VK картинка с сервера приходит квадратная, круглой она становиться уже с помощью CSS.
Судя по тегам, вам нужно именно в nodeJS получить круглую картинку. Вам понадобится модуль canvas, установите его командой: npm install canvas
Дальше используйте привычный Canvas API с некоторыми дополнениями. Вот пример:
const { createCanvas, loadImage } = require('canvas')


const canvas = createCanvas(50, 50)
const ctx = canvas.getContext('2d')

loadImage('https://habrastorage.org/r/w60/webt/5d/fc/84/5dfc84d27a4a2949249978.jpeg')
  .then((image) => {
    ctx.drawImage(image, 0, 0, 50, 50);
    ctx.globalCompositeOperation = 'destination-in';
    ctx.beginPath();
    ctx.arc(25, 25, 25, 0, Math.PI * 2);
    ctx.closePath();
    ctx.fill();

    console.log(canvas.toDataURL()) // Выводим в консоль Data URL
  })

Результат: 5edcdd6758dd6509301326.png
P.S. Дуболом Одноклеточный, стыбрил твою аву для демонстрации, не обижайся)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
duboloms
@duboloms
Люблю есть дубы с кетчупом. Веб-разработчик.
Просто прочитай файл (картинку) которую тебе отправил пользователь.
А в css:
селектор элемента, где будет эта картинка {
  border-radius: 50%; // обрезаю картинку
}
Ответ написан
Комментировать
samodum
@samodum
Какой вопрос - такой и ответ
В исходном виде картинка квадратная.
Круглая она получается уже на стороне клиента в браузере посредством css
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы