Как прочитать/написать необработанный блок MCU JPEG из изображения? [.NET Preffered] [возможно, используя стороннюю библиотеку IAMGE
-
02-10-2019 - |
Вопрос
Я хочу прочитать необработанные данные изображения JPEG, чтобы я мог манипулировать им, не теряя какого -либо качества при этом.
Я посмотрел на библиотеку libjpeg.net http://bitmiracle.com/libjpeg .
Но есть много кода и не мог найти ничего о чтении/написании необработанных блоков.
Главным образом я хочу реализовать редактирование изображения JPEG, и мне было интересно, как это сделать?
http://en.wikipedia.org/wiki/jpeg#lossless_editing
спасибо
Обновлять:
По сути, я хочу получить доступ к данным блока JPEG в качестве своего рода массива, чтобы я мог прочитать данные.
И тогда я хочу создать новый JPEG и получить доступ к какому -то массиву блоков, которые я могу заполнить строками из других изображений.
Задачи кажется простыми, но проблема в том, что документация Libjpeg.net не так ясна.
Я достиг этого состояния кода сейчас.
var cinfo = new BitMiracle.LibJpeg.Classic.jpeg_decompress_struct();
cinfo.jpeg_stdio_src(new System.IO.FileStream(@"C:\File.jpg", System.IO.FileMode.Open));
cinfo.jpeg_read_header(true);
cinfo.jpeg_start_decompress();
Но вот и все, я не знаю, где найти этот массив блоков MCU или если я даже читаю правильную структуру
Решение
Может быть, bitmiracle.libjpeg.classic.jpeg_decompress_struct.jpeg_read_raw_data () будет делать то, что вам нужно.
Вы также можете просмотреть реализацию JPEGCODEC в Libtiff.net. Анкет Этот кодек использует libjpeg.net для различных целей. Чтение несжатых данных JPEG входит в число из них.
Отказ от ответственности: я один из сопровождающих библиотеки.
Другие советы
Я не уверен, что у JPEGLIB есть публичные функции для этого. Они поддерживают преобразования без потерь в jtransform_execute_transformation, но имеют только rotate90/280/2780, перевернуть, обрезку и транспонировать.
Вам придется прочитать источник этой функции, чтобы выяснить, как она получает блоки. Быстрый вид показывает, что он использует
srcinfo->mem->access_virt_barray
Что является функцией PTR-TO, где srcinfo
это j_decompress_ptr
. Анкет Это получает JBLOCKARRAY
От этого.
Я бы попытался прочитать do_flip_v
что должно быть легким преобразованием, чтобы понять.