0

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ブロックの配列がどこにあるのか、または正しい構造を読んでいるのかさえわかりません

4

2 に答える 2

1

おそらく BitMiracle.LibJpeg.Classic.jpeg_decompress_struct.jpeg_read_raw_data() が必要なことを行います。

LibTiff.Net でのJpegCodecの実装を確認することもできます。そのコーデックは、さまざまな目的で LibJpeg.Net を使用します。非圧縮jpegデータの読み込みもその一つです。

免責事項: 私はライブラリの管理者の 1 人です。

于 2010-09-14T14:00:55.407 に答える
1

jpeglib にそのためのパブリック関数があるかどうかはわかりません。jtransform_execute_transformation で可逆変換をサポートしますが、rotate90/280/2780、flip、crop、transpose しかありません。

ブロックを取得する方法を見つけるには、その関数のソースを読む必要があります。ざっと見てみると、

srcinfo->mem->access_virt_barray

これは ptr-to-function であり、srcinfoj_decompress_ptr. それはそれJBLOCKARRAYから得ます。

do_flip_v理解しやすい変換であるべきものを読んでみます。

于 2010-09-13T21:07:37.033 に答える