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 24.05.2017 16:55

Сохранение Canvas в grayscale 8bit jpeg или png
 
Форум расскажи есть ли какие либо готовые библиотеки или простой способ вывода на сохранение в javascript на стороне клиента в 8 битный jpeg ? Если в двух словах я написал на яс приложение для обрезания фоток с вебкамеры и сохранением их. Собственно потребовалось их преобразовать в grayscale 256 формат. Как убрать цвет я с легкостью нашел, но таки сам сохраненный файл так и остается 32 битным (24 на цвет 8 на альфу), а есть нужда сохранять именно 8 бит т.б. 256 grayscale. Ткните носом в хорошую инфу или помогите реализовать. :help:

Taifune 24.05.2017 17:27

В гугле отыскалась небольшая кучка конвертеров которые способны сохранить файл в скажем gif или pdf, но вот что бы конкретно как сделать вывод файла jpeg с параметрами мне пока не удалось найти.

laimas 24.05.2017 17:36

Цитата:

Сообщение от Taifune
сделать вывод файла jpeg с параметрами

JPEG, это не индексированная палитра.

https://habrahabr.ru/post/173773/

Taifune 24.05.2017 17:46

Я знаю. Мне не требуется индексированная палитра. Мне нужен файл в таком вот формате. посути jpeg ли это будет или png не суть важно, но не gif. но нужно 256 оттенков серого.

laimas 24.05.2017 17:57

Цитата:

Сообщение от Taifune
но нужно 256 оттенков серого

JPEG и PNG, это 24-битный цвет в любом случае. Чего вы хотите, из из серой 24 битной палитры вычесть лишнее? А смысл?

Taifune 24.05.2017 18:02

Цитата:

Сообщение от laimas (Сообщение 453306)
JPEG и PNG, это 24-битный цвет в любом случае. Чего вы хотите, из из серой 24 битной палитры вычесть лишнее? А смысл?

Вот давайте не будем про смысл )) Смысл - Есть. Заказчик требует. Файл что я загрузил выше имеет 8 битную палитру при формате PNG. Так что ваше утверждение что это в любом 24-битный цвет я не могу принять всерьез. Единственное что этот файл был получен с использованием сторонних приложений (Xnview), а мне нужно на прямую получать при сохранении 8 битный файл в javascript. Все это происходит на стороне пользователя, без загрузки на сервер если что.

laimas 24.05.2017 18:07

PNG бывает двух форматов - PNG24 и PNG8. Canvas не работает с индексированной палитрой, вы не сможете получить такую палитру на выходе. Нужна индексированная, значит конвертируйте. Если же ограничить количество оттенков серого в JPEG или PNH24 до 256, то файл при этом как был 24-битным так им и останется.

Taifune 24.05.2017 23:18

Цитата:

Сообщение от laimas (Сообщение 453309)
то файл при этом как был 24-битным так им и останется.

Но сторонними средствами у меня есть возможность создать 8 битный Джепег у которого 256 отенков серого.

Цитата:

Сообщение от laimas (Сообщение 453309)
конвертируйте.

Я за этим и пришел.. Расскажите как. Я не знаю как это сделать.

SV0L0CH 25.05.2017 01:28

Цитата:

Сообщение от Taifune (Сообщение 453342)
Я за этим и пришел.. Расскажите как. Я не знаю как это сделать.

Походу надо будет выбрать простейшую в реализации спецификацию подходящих форматов и попиксельно формировать этот самый формат.
Я о том, что задача редкая и найти готовое решение будет проблематично.
Так что рекомендую отговорить заказчика от использования компактного формата или выпросить у него дополнительно пару недель рабочего времени чтобы запилить свой конвертор.

laimas 25.05.2017 03:51

Цитата:

Сообщение от Taifune
у меня есть возможность создать 8 битный Джепег у которого 256 отенков серого

Что за глупости, то что в изображении будет 256 оттенков (хотя из-за артефактов присущих этому формату добиться точно заданного количества вряд ли получится) не означает, что оно превратилось в 8 битное индексированное. Индексированная палитра, это вообще иное.


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