Как прочитать / записать блок MCU в формате JPEG из изображения?[предпочтение .net] [возможно, с использованием сторонней библиотеки iamge] - PullRequest
0 голосов
/ 13 сентября 2010

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

Ответы [ 2 ]

1 голос
/ 14 сентября 2010

Возможно BitMiracle.LibJpeg.Classic.jpeg_decompress_struct.jpeg_read_raw_data () будет делать то, что вам нужно.

Вы также можете просмотреть реализацию JpegCodec в LibTiff.Net .Этот кодек использует LibJpeg.Net для различных целей.Чтение несжатых данных в формате JPEG входит в их число.

Отказ от ответственности: я один из сопровождающих библиотеки.

1 голос
/ 14 сентября 2010

Я не уверен, что jpeglib имеет публичные функции для этого. Они поддерживают преобразования без потерь в jtransform_execute_transformation, но имеют только rotate90 / 280/2780, зеркальное отражение, обрезка и транспонирование.

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

srcinfo->mem->access_virt_barray

Что является ptr-функцией, где srcinfo - это j_decompress_ptr. Он получает JBLOCKARRAY от этого.

Я бы попытался прочитать do_flip_v, что должно быть простым преобразованием для понимания.

...