Как прочитать/написать необработанный блок MCU JPEG из изображения? [.NET Preffered] [возможно, используя стороннюю библиотеку IAMGE

StackOverflow https://stackoverflow.com/questions/3702939

Вопрос

Я хочу прочитать необработанные данные изображения 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 что должно быть легким преобразованием, чтобы понять.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top