25.05.2017, 17:12
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Taifune
|
Что даст мне эта операция не могу осознать.
|
То что canvas дает на выходе 32-ное изображение и всякие инсинуации "вот тут другой профессор говорил что канвас не может содержать индексированный цвет" пора прекратить.
Что и как вы там делаете, это можно опустить. Пусть вы получаете изображение после canvas, если в нем его обрезаете и т.п. Далее конвертируете его в индексированную палитру. А запись в файл, это уже согласно формата PNG в котором нужно определить параметры - палитру, указать количество цвета и т.п.
|
|
25.05.2017, 17:14
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Taifune
|
Фотографии для программы которая печатает пластиковые карты. с фотографией и подписью.
|
И зачем же JS напрягать, если это вроде бы как прикладное приложение, а не веб?
|
|
25.05.2017, 17:25
|
|
Интересующийся
|
|
Регистрация: 24.05.2017
Сообщений: 18
|
|
Сообщение от laimas
|
И зачем же JS напрягать, если это вроде бы как прикладное приложение, а не веб?
|
Опять эти вопросы "зачем ?". Так и хочется ответить затем. Вообщем это все будет интегрировано в веб-интерфейс.
Сообщение от laimas
|
Далее конвертируете его в индексированную палитру. А запись в файл, это уже согласно формата PNG в котором нужно определить параметры - палитру, указать количество цвета и т.п.
|
А как это сделать?? Что для этого нужно.. Вы говорите об этом как о чем то самом разумеющимся. Как сконвертировать то ? Начнем с того что это мое первое приложение на JS и я до этого с ним вообще не работал. Да и с изображениями на таком уровне я никогда не работал. Я не представляю как здесь можно это реализовать. И в файл как вывести. Вот товарищ подсказал про image/octet-stream. На досуге почитаю разберусь с этим. Печально что нет готовых решений.
И кстати не надо вырывать из контекста
Сообщение от Taifune
|
Кстати вот тут другой профессор говорил что канвас не может содержать индексированный цвет, но с другой стороны мне и ненужно его выводить перед сохранением на просмотр. Может есть возможность использовать обычный массив для индексации и перевода в 8 бит?
|
Я в этой фразе наоборот соглашаюсь с тем что канвас не может хранить индекированную палитру, а не наоборот что хочу ее туда запихать. Я говорю о массиве без вывода на страницу. В массиве то мы можем пересобрать файл как нам надо?
Последний раз редактировалось Taifune, 25.05.2017 в 17:29.
|
|
25.05.2017, 17:46
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Taifune
|
Вот товарищ подсказал про image/octet-stream
|
И что, вы думаете эта операция автоматом догадается сохранить ваш 32 битник в индексированной палитре? Счас.
Сообщение от Taifune
|
Как сконвертировать то ?
|
Я вам давал ссылку, но там сохранение в GIF и с использованием уже готовой библиотеки, если нечто готовое для PNG-8 я не знаю.
Самому писать, так это согласно формата. Поэтому и не понятно нахрена вам эти заморочки. Если все-таки предполагается веб, а значит и хранение результата на сервере, то разумнее всего отдать это серверу на растерзание. К примеру, если серверный язык, это РНР, то вашу проблему тремя строками кода решает GD.
Если же на клиенте, и ваше приложение использует стороннее ПО xnview, то почему не им сразу сохранить в индексированной палитре. Есть еще один кандидат решения проблемы ImageMagick - достаточно запустить его командной строкой с параметрами и на выходе получим и обрезанное, и серое, и индексированное, и какое угодно.
|
|
25.05.2017, 19:05
|
Профессор
|
|
Регистрация: 07.11.2010
Сообщений: 301
|
|
Сообщение от laimas
|
И что, вы думаете эта операция автоматом догадается сохранить ваш 32 битник в индексированной палитре? Счас.
|
Не факт что не догадается. toDataURL выдаёт PNG, но не факт что в разных браузерах это будет один формат. Главное что полученную картинку в виде ссылки в формате data можно смело вставлять в <img/>, в <a/> и в тот же <canvas/> или открывать в той же или новой вкладке. С этой точки зрения разработчик браузера должен хотя бы пытаться оптимизировать размер ради удобства пользователя.
Собственно я рекомендую при разработке браузерного приложения переложить максимум задач на браузер.
Taifune, Таки надо объяснить заказчику что экономить на размере изображений нецелесообразно. Память нынче дешевая. Кроме случая когда данные надо передать по тормознутому модему(у меня самого мобильный интернет) это не актуально. При работе на локальной машине, даже если это мобилка, это значение вообще не имеет. Выгодней в таких случаях задействовать алгоритм типа GZIP, для таких задач уже есть готовые решения под браузер. Рекомендую сосредоточится на этом.
|
|
25.05.2017, 19:20
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от SV0L0CH
|
toDataURL выдаёт PNG, но не факт что в разных браузерах это будет один формат. Главное что полученную картинку в виде ссылки в формате data можно смело вставлять в <img/>
|
Автору не это нужно, а 8-битное изображение. А если говорить об оптимизации, то base64 на это претендовать не может. )
|
|
25.05.2017, 19:21
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от SV0L0CH
|
Не факт что не догадается.
|
Есть надежда, что все-таки получится?
|
|
26.05.2017, 11:54
|
|
Интересующийся
|
|
Регистрация: 24.05.2017
Сообщений: 18
|
|
Сообщение от laimas
|
И что, вы думаете эта операция автоматом догадается сохранить ваш 32 битник в индексированной палитре? Счас.
Я вам давал ссылку, но там сохранение в GIF и с использованием уже готовой библиотеки, если нечто готовое для PNG-8 я не знаю.
Самому писать, так это согласно формата. Поэтому и не понятно нахрена вам эти заморочки. Если все-таки предполагается веб, а значит и хранение результата на сервере, то разумнее всего отдать это серверу на растерзание. К примеру, если серверный язык, это РНР, то вашу проблему тремя строками кода решает GD.
Если же на клиенте, и ваше приложение использует стороннее ПО xnview, то почему не им сразу сохранить в индексированной палитре. Есть еще один кандидат решения проблемы ImageMagick - достаточно запустить его командной строкой с параметрами и на выходе получим и обрезанное, и серое, и индексированное, и какое угодно.
|
Ох елки.. Я как раз не думал что одна операция догадается что-то сделать я лишь предположил что это операция сохраняет переданный массив в виде файла и если я таки смогу отконвертировать в массиве в нужный вид то этой командой можно будет файл построить.
Так теперь далее.. Приложение мое не использует XnView. Это приходится пользователю делать ручками.. Фотки эти мне на сервере ненужны. Они идут для другой программы. Которая уже написана( не мной, это законченный продукт и изменить что то в нем нет возможности). Получать файл тут и далее открывать его в той программе и менять битность и сохранять. А про имадж меджик заинтересовали.. Если его запуск по отношению к файлам в папке возможно реализовать через JS может быть это бы и сошло, но вот беда JS очень параноидальный язык и чую получить доступ к командной строке если не невозможно то очень не просто...
|
|
26.05.2017, 12:08
|
|
Интересующийся
|
|
Регистрация: 24.05.2017
Сообщений: 18
|
|
Я тут получил файл который выдает уже программа в которую я гружу свои фотки. И о чудо ? Что это за формат ? Что скажете профессор ?
Как мне вам верить ? ) Вы же говорили 8битного джепега не бывает и это вообще чуш)
Последний раз редактировалось Taifune, 26.05.2017 в 12:11.
|
|
26.05.2017, 12:24
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
Цитата:
|
Наиболее распространённым, поддерживаемым большинством доступных кодеков, является последовательное (sequential JPEG) представление данных, предполагающее последовательный обход кодируемого изображения разрядностью 8 бит на компоненту (или 8 бит на пиксель для чёрно-белых полутоновых изображений) поблочно слева направо, сверху вниз.
|
https://ru.wikipedia.org/wiki/JPEG
|
|
|
|