Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сохранение Canvas в grayscale 8bit jpeg или png (https://javascript.ru/forum/misc/69017-sokhranenie-canvas-v-grayscale-8bit-jpeg-ili-png.html)

Taifune 26.05.2017 12:30

Цитата:

Сообщение от laimas
Пороть же чушь о создании 8-битного JPEG не надо. Вы хотя бы на Вики почитайте что такое 8-битная палитра и в каких форматах изображения ее можно сохранить (если ориентироваться на веб), и что такое HighColor и TrueColor изображения

Цитата:

Сообщение от Dilettante_Pro (Сообщение 453492)
Наиболее распространённым, поддерживаемым большинством доступных кодеков, является последовательное (sequential JPEG) представление данных, предполагающее последовательный обход кодируемого изображения разрядностью 8 бит на компоненту (или 8 бит на пиксель для чёрно-белых полутоновых изображений) поблочно слева направо, сверху вниз.https://ru.wikipedia.org/wiki/JPEG

Вот и почитали вики вместе. ) Так а теперь давайте как в той передаче. Поможем Даше перекодировать 32 битный канвас в 8 битный жпег grayscale v1.1

laimas 26.05.2017 12:42

Цитата:

Сообщение от Taifune
Как мне вам верить ?

Уже дали ссылку. )

Этот формат используется и видео даже, если вы не знали. JPEG в графике, это 24 бита на цвет (нет альфа канала). Как я и ранее предлагал с PNG-8, загрузите свой рисунок 8-битый и сохраните в JPEG, получите 24-биное изображение. Но если работать в редакторе умеющем не просто сохранять, но и оптимизировать, то можно выбрать сохранение "только оттенки серого". Так понятно?

То есть "по умолчанию" как вы желаете вам никто не сделает.

Цитата:

Сообщение от Taifune
Если его запуск по отношению к файлам в папке возможно реализовать через JS может быть это бы и сошло

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

Taifune 26.05.2017 12:53

Цитата:

Сообщение от laimas (Сообщение 453495)
Уже дали ссылку. )

Этот формат используется и видео даже, если вы не знали. JPEG в графике, это 24 бита на цвет (нет альфа канала). Как я и ранее предлагал с PNG-8, загрузите свой рисунок 8-битый и сохраните в JPEG, получите 24-биное изображение. Но если работать в редакторе умеющем не просто сохранять, но и оптимизировать, то можно выбрать сохранение "только оттенки серого". Так понятно?

То есть "по умолчанию" как вы желаете вам никто не сделает.



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

Да я умею работать с графическими редакторами и используя фш и другие программы я могу получить любой формат который только есть, но еще раз повторюсь мне нужно вывести на сохранение файл используя JS на стороне клиента в JPEG grayscale v1.1.

Даже JS но не из под веб страницы... Ну еперный театр )) Серьезно ?) Я об это им написал вроде как. Если бы вы знали способ как запустить коммандную строку со страницы ( То писали бы вирусы :D ).

З.Ы. Написать то код кто нибудь поможет ?

laimas 26.05.2017 12:58

Цитата:

Сообщение от Taifune
Даже JS но не из под веб страницы... Ну еперный театр )) Серьезно ?) Я об это им написал вроде как.

Ну вроде бы я спрашивал, нахрена же вам JS, и что ответом было напомнить? :)

Забейте на JS в данном случае, используйте иное, исходя из OS.

Taifune 26.05.2017 13:02

Цитата:

Сообщение от laimas (Сообщение 453497)
Ну вроде бы я спрашивал, нахрена же вам JS, и что ответом было напомнить? :)

Забейте на JS в данном случае, используйте иное, исходя из OS.

Супер помогли ) На форуме JS сказали забейте на JS ) ой все. Я подожду может кто то все таки предложит что то дельное.

laimas 26.05.2017 13:08

Тогда я этого не понимаю Даже JS но не из под веб страницы.... Если все это не из под веб страницы будет использоваться, то можно даже и JS. Например в среде Windows, это может быть HTA. Можно использовать VBS, он без проблем запустит из под командной строки ImageMagick. В чем проблема?

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

Taifune 26.05.2017 13:40

Цитата:

Сообщение от laimas (Сообщение 453499)
Тогда я этого не понимаю Даже JS но не из под веб страницы.... Если все это не из под веб страницы будет использоваться, то можно даже и JS. Например в среде Windows, это может быть HTA. Можно использовать VBS, он без проблем запустит из под командной строки ImageMagick. В чем проблема?

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

Да это цитата была.. Без тега квота уже не понятно? Я про запуск имажмажика говорил нафига мне не из под веб страницы.

laimas 26.05.2017 14:42

Ну тогда только преобразование в серое в canvas, затем получить данные изображения как getImageData(...).data, затем используя Uint8ClampedArray/blob упаковать согласно формата JPEG нужного и записать в файл.

Taifune 26.05.2017 15:22

А вот это уже интересно. По идее в этот массив можно записать из любой даты[0][1][2] инфу т.к. кодом что я выше кидал он усредняется и во всех 3 каналах одинаковые значения. А вот как потом через блоб собирать джепег ?

laimas 26.05.2017 15:52

У вас уже будут готовые бинарные данные. Например, здесь посмотрите пример Grayscaling and inverting colors. А вообще, вроде бы речь была о том, что изображение уже в градациях серого после ПО, тогда и canvas не нужен.

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

Если покопаться, то браузеры могут кое что, например тут пример записи в файл Save toBlob to disk, лиса записывает в файл PNG конвертируемый в BMP. Все бы хорошо, но почитайте о поддержке, а ведь в рамках веб нужна кроссбраузерность. И у каждого из них будет свое, если только оно есть.

Там же найдете описание и Uint8ClampedArray, можно и ArrayBuffer использовать.

Так что "безопасно", это самому ручками, изучайте формат, пакуйте, сохраняйте.


Часовой пояс GMT +3, время: 15:07.