Arhn - архитектура программирования

Получить URL-адреса и объединить их в одно изображение высокого качества (Javascript)

В настоящее время у меня есть часть JS, которая позволяет мне получать все URL-адреса IMG внутри определенного DIV (vpc-preview). Теперь я ищу решение, чтобы взять эти URL-адреса и объединить их в одно изображение, которое появляется для загрузки пользователем.

Я использую этот метод, а не что-то вроде метода «HTMLCanvasElement.toDataURL», поскольку мне нужно изображение высокого качества. Я обнаружил, что метод Html2canvas создает размытое изображение, особенно на сетчатке. Исходные URL-адреса представляют собой изображения высокого качества, которые были бы идеальными, если бы их просто объединили.

Примечание. Изображения не будут иметь одинаковых имен, и может быть от 5 до 30 изображений, расположенных друг над другом. Вот почему я собираю их из контейнера, в котором они находятся, и высота/ширина являются единственными константами.

Ниже приведен скрипт, который я собрал, чтобы показать, что у меня есть на данный момент, единственная разница в том, что изображения будут располагаться друг над другом, а не рядом.

Демонстрационная скрипта

function img_find() {
var imgs = document.querySelectorAll('#vpc-preview img');
var imgSrcs = [];

for (var i = 0; i < imgs.length; i++) {
imgSrcs.push(imgs[i].src);
}

return alert(imgSrcs);
}

ОБНОВЛЕНИЕ: следующая скрипта позволяет пользователям загружать изображения, а затем объединяет их в одну фотографию для загрузки. К сожалению, мои навыки кодирования недостаточно хороши, чтобы манипулировать этим, используя URL-адреса SRC изображений в определенном DIV и объединять все фотографии друг с другом. Нажмите здесь, чтобы увидеть цепочку, из которой это пришло.

Fiddle

function addToCanvas(img) {
// resize canvas to fit the image
// height should be the max width of the images added, since we rotate -90        degree
// width is just a sum of all images' height
canvas.height = max(lastHeight, img.width);
canvas.width = lastWidth + img.height;

ctx.clearRect(0, 0, canvas.width, canvas.height);
if (lastImage) {
    ctx.drawImage(lastImage, 0, canvas.height - lastImage.height);
}

ctx.rotate(270 * Math.PI / 180); // rotate the canvas to the specified degrees
ctx.drawImage(img, -canvas.height, lastWidth);

lastImage = new Image();
lastImage.src = canvas.toDataURL();
lastWidth += img.height;
lastHeight = canvas.height;
imagesLoaded += 1;
}

  • FWIW: проблема размытого изображения на дисплеях Retina хорошо известна. Google это, и вы можете решить с очень немногими проблемами. 30.11.2016
  • Привет Тиаго, это просто кажется долгим способом сделать это. Поскольку это включает в себя масштабирование изображения и т. д., в котором нет необходимости, когда изображения SRC легко доступны в наилучшем качестве. 30.11.2016

Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..