169 похожих чатов

Привет, может кто знает как создать png с 16 битными

оттенками серого в javascript? Вчера писал с частично похожим вопросом, посоветовали webgl, но это не совсем то, надо что-то попроще, просто создать 16 битный png, можно даже не отрисовывать

34 ответов

13 просмотров

И какие конкретно проблемы?

Dmitry- Автор вопроса
Jakhongir
И какие конкретно проблемы?

Ну в целом хотя бы какую библиотеку использовать, какая с этим справится? В какую сторону копать?

Dmitry
Ну в целом хотя бы какую библиотеку использовать, ...

Ну на канвасе можно попиксельно нарисовать что нужно и сохранить как пнг. А вот библиотека лучше загуглить

Почему вебгл не совсем то?

Dmitry- Автор вопроса
Jakhongir
Ну на канвасе можно попиксельно нарисовать что нуж...

Я на канвасе и нарисовал, только канвас не даст вывести 16 битную градацию серого, я там нарисовал как 8 битную. Или может? Просто я выводил в канвас как rgb

Dmitry
Я на канвасе и нарисовал, только канвас не даст вы...

Тогда лучше на нпм пошарься, может найдешь подходящую библиотеку

Dmitry- Автор вопроса
Jakhongir
Тогда лучше на нпм пошарься, может найдешь подходя...

Что такое нпм? Я находил pngjs и png-coder, но пока из них ничего не получил, тупо не умею пользоваться, в javascript недавно

Dmitry- Автор вопроса
SY573M_404
npmjs.org

Спасибо)

Для такой задачи вряд ли нужен webgl. Достаточно обычного canvas-api

https://developer.mozilla.org/ru/docs/Web/API/Canvas_API/Tutorial/Pixel_manipulation_with_canvas Проходишь по каждому пикселю, забираешь из него красный+зелёный+синий, вычисляешь по своей формуле оттенок серого и сохраняешь. Вроде как достаточно)

Dmitry- Автор вопроса
Nelkor
Для такой задачи вряд ли нужен webgl. Достаточно о...

Canvas мне выводит 256 градаций серого, там я настроил его как вывод RGB png, т.е например есть у меня число в массиве 39680, это 16 битной, делю его на 256, получаю 8 битное число 155, вот и вывожу его как rgb (155, 155, 155)

Dmitry
Canvas мне выводит 256 градаций серого, там я наст...

Если есть 256 градаций, то и 16 из них сделать можно, разве нет?

Dmitry- Автор вопроса
Nelkor
https://developer.mozilla.org/ru/docs/Web/API/Canv...

Пиксельная манипуляция это не то, у меня нет изначального изображения, просто массив размером n на m, заполненный 16 битными числами. Из него надо создавать png. Проходиться просто не почему)

Jakhongir
16бит это 65к градаций)

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

Dmitry
Canvas мне выводит 256 градаций серого, там я наст...

Тебе именно изображение нужно или просто инфу кодируешь?

Dmitry- Автор вопроса
Nelkor
Если есть 256 градаций, то и 16 из них сделать мож...

Нет, только наоборот, из 16 можно сделать 8, понизить разрядность

Dmitry
Нет, только наоборот, из 16 можно сделать 8, пониз...

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

Dmitry- Автор вопроса
Jakhongir
Кстати, зачем тебе 16 бит?

16 бит надо для последующей компьютерной обработки, это рентгеновский снимок, человек различает 256 градаций, пк мотом обработать то, что человек не различил

Dmitry
16 бит надо для последующей компьютерной обработки...

Так а зачем ПК сам рисунок? Пусть массив чисел обрабатывает. А человек будет смотреть на снимок с 256 градациями

Dmitry
16 бит надо для последующей компьютерной обработки...

Ты можешь сохранить часть инфы условно в R канал, часть в G канал))

Dmitry
16 бит надо для последующей компьютерной обработки...

И вот канвас дает тебе 24бита на каждый пиксель))

Dmitry- Автор вопроса
Jakhongir
Тебе именно изображение нужно или просто инфу коди...

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

Dmitry
16 бит надо для последующей компьютерной обработки...

Имхо человек различает намного больше 256 градаций и оттенков

Dmitry- Автор вопроса
Nelkor
Так а зачем ПК сам рисунок? Пусть массив чисел обр...

Программа для обработки принимает tiff формат, как из массива данных сделать tiff, я уже сломал мозг, поэтому надо сделать png, его потом конвертировать в tiff) Второй пункт как сделать посоветовали вчера, первый теперь надо реализовать

Dmitry
Программа для обработки принимает tiff формат, как...

Вообще покури документацию пнг-кодер, там должно быть что тебе нужно

Dmitry- Автор вопроса
Jakhongir
Ты можешь сохранить часть инфы условно в R канал, ...

Ну разбить на старшую и младшую часть, это тоже как вариант, просто как потом склеить эти два получивших я изображений?

Dmitry- Автор вопроса
Jakhongir
И вот канвас дает тебе 24бита на каждый пиксель))

Там же 24 бита это по 8 на rgb? Итого имеем 8 битную глубину цвета серого

Dmitry- Автор вопроса
Jakhongir
Вообще покури документацию пнг-кодер, там должно б...

Ну вот читаю про pngjs и png-coder, пока безрезультатно. Я даже библиотеку не смог нормально подключить) Беда пока что с js

Dmitry
Там же 24 бита это по 8 на rgb? Итого имеем 8 битн...

Нет, это просто кодирование. Будет не изображение, а мазня какаято, но при парсинге через старщие/младщие части будешь получать необходимую инфу

Dmitry- Автор вопроса
Jakhongir
Нет, это просто кодирование. Будет не изображение,...

Ну я идею понял, с разбиение на 16 старшие и младшие биты по 8, но мне не понятна реализация, как потом разгребать все это в рамках формата png, да и в самом формате есть 16 bit grayscale, надо вписываться в эти рамки формата. Ну и про 24 бит, вот сейчас у меня канвас сохраняется как 8 битный rgb, если смотреть свойства png потом, то там будет: глубина цвета 24

Dmitry- Автор вопроса
Jakhongir
Нет, это просто кодирование. Будет не изображение,...

Мне вообще проще было бы создать структуру png формата согласно его 16 bit scale, и тупо её заполнять значениями массива, но не могу разгрестись в формате png и как эту структуру создать в js

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта