2012-06-16 3 views
4

Часть моего приложения Усилено использование изображений. Кадрирование, фильтры и т. Д. С использованием сообщений ajax и сервера обработки изображений с использованием различных методов. Каждое действие манипуляции, которое принимает пользователь, создает физический образ без удаления оригинала, чтобы позволить системе «отменить», давая пользователю возможность вернуть свое изображение обратно в любой предыдущий момент времени.Что лучше всего в этом случае, Base64 или статические изображения?

Все эти «временные» изображения удаляются через сообщение на сервер, когда пользователь заканчивает сеанс или закрывает свой браузер.

Для современных браузеров мы будем расширять возможности манипулирования изображениями с помощью html5. Использование canvas дает нам возможность выполнять все эти манипуляции с изображениями на стороне клиента, не создавая дополнительных статических изображений, кодируя и динамически внедряя данные base64.

Меня беспокоит система «отмены». С помощью метода статического возврата мы храним массив объектов, содержащий ссылки на статические изображения. Это дает полную функциональность отмены. Однако, если мы сделаем это все клиенты, тогда этот массив должен будет фактически содержать копии данных base64 для каждой точки отмены. Для каждого изображения, которое пользователь манипулирует (типичным вариантом использования может быть 20 оригинальных изображений с 4-5 отменными точки).

Прежде чем я проведу пару дней, прототипируя это, я надеялся, что у кого-то могут быть комментарии относительно этого метода. Это хорошая идея? Плохая идея? Сохраняет ли огромный объект данных изображений base64 плохую идею с точки зрения производительности браузера и использования памяти?

Любые мысли приветствуются, спасибо заранее.

+0

'Является ли хранение огромного объекта данных изображений base64 плохими идеями с точки зрения производительности браузера и использования памяти?', Насколько вы их ожидаете? 1400px на стороне, да, 5px на стороне, нет. Также, как вы знаете, когда они закрывают браузер? – jcolebrand

+0

Они могут быть размером до 1200 пикселей. Мы используем событие javascript onbeforeunload, которое запускается, когда пользователь закрывает свой браузер и отправляет сообщение на сервер, содержащий имена файлов изображений. Он работает чудесно. Единственный раз, когда изображения не удаляются, - если браузер сбой. Но у нас есть методы очистки, которые автоматически устанавливаются по истечении заданного времени. – gordyr

+0

Я думаю, что эта идея в порядке. Копирование моей математики снизу: если каждое изображение составляет ~ 1200 пикселей (например, 1,2 килопикселя или 0,0012 мегапикселя), мы можем предположить, что каждая картина составляет ~ 24 кбайт, поэтому, если мы добавим 30% к этому, это ~ 30 тыс. На изображение. 20 изображений раз 5 резервных точек - 100 точек, раз 30 тыс. Изображений - 3 МБ. Конечно, у меня есть большие аудиофайлы на моем компьютере. Я думаю, что хранение таких вещей в localstorage на локальном компьютере совершенно противоречиво. – jcolebrand

ответ

0

Плохая идея. Base64 занимает 30% больше хранилища, которое кодирует фактические данные. Если ваши изображения на сервере доступны через фактические URL-адреса, подумайте о том, чтобы ссылки на элементы <img> были отделены от DOM.

+0

Это не значит, что это ужасная идея. Если каждое изображение составляет ~ 1200 пикселей (например, 1,2 килопикселя или 0,0012 мегапикселя), мы можем предположить, что каждое изображение составляет ~ 24kb, поэтому, если мы добавим 30% к этому, это ~ 30k на изображение. 20 изображений раз 5 резервных точек - 100 точек, раз 30 тыс. Изображений - 3 МБ. Конечно, у меня есть большие аудиофайлы на моем компьютере. – jcolebrand

+0

Другой альтернативой было бы выполнить все действия на стороне клиента и отправить данные base64 на сервер для генерации фактических изображений? Это похоже на лучший компромисс? – gordyr

+0

Правда, это не страшная идея, но бессмысленно хранить данные B64, если вы действительно не нуждаетесь в ней в форме B64. Зависит от фактического кода, который в любом случае нуждается в этих изображениях. – lanzz

Смежные вопросы