問題タブ [libjpeg-turbo]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - VS2013 x64 で動作する jpeglib-turbo の例が必要
jpeg-turbo ライブラリの使い方を学ぼうとしています。そして、私は時間の悪魔を始めています。doc フォルダー内の example.c の例、および Web で見つけたすべての例は、.jpg ファイルを読み込もうとすると VS2013 でクラッシュします。それらは正常にコンパイルされます。しかし、それらを実行すると、アクセス違反エラーでクラッシュします。
私が本当に必要としているのは、VS2013 x64 で適切に動作することが知られている小さな (初心者に優しい) サンプルです。main(){} コード ブロック コードを含めます。また、VS プロジェクトのプロパティに特別な設定が必要な場合は、このクラッシュの原因となる可能性があります。
簡単な例を 1 つ機能させようとしているだけです。
助けてくれてありがとう。
*編集 - これは非常に小さな例です。また、Boost/GIL を使用して、または使用せずに jpeglib を実行しようとしましたが、イメージをロードするときに常にクラッシュします: 0x00000000774AE4B4 (ntdll.dll) での例外
jpeg - jpegoptim vs jpegtran vs mozjpeg
この件に関して、わずかに矛盾する 2 つのブログ投稿を見つけました。ここで要約します。
- jpegoptim と jpegtran は同じように動作し、同じ結果を生成しますが、mozjpeg はわずかなファイルサイズの節約に 2 倍の時間がかかります
- mozjpeg は約 1.7* の計算時間を要し、jpegtran と比較してファイルサイズの節約にほぼ比例する利点があります。
混乱に加えて、この Reddit スレッドは、mozjpeg が jpegcrush で使用されているのと同じアルゴリズムを使用していること、および jpegcrush が jpegtran のラッパーであることを示唆しています...つまり、完全な円になったのですか? これらの Reddit のコメントは間違っているとしか思えませんが、それを確認できる人はいますか?
pillow - jpegtran は、libjpeg-turbo、jpegoptim、および mozjpeg とどのように関連していますか?
私が理解していることから、jpegtranはlibjpeg-turboに含まれており、optimize=True
. jpegoptim は jpegtran と同じアルゴリズムを使用しますが、画像を最適化する前に一時的にディスクに保存する必要があり、jpegoptim には可逆圧縮する追加機能があります。
Github の mozjpeg リポジトリを見ると、libjpeg-turbo への参照がたくさんあり、スターがはるかに多いので、私の質問はそれらがどのように関連しているのかということです。mozjpeg は libjpeg-turbo のフォークであり、すべてを実行しますか? つまり、mozjpeg の特定の機能を無効にして、最終的に libjpeg-turbo と同じパフォーマンスと結果を得ることは可能ですか?
c - libjpeg ターボ tjCompressFromYUV
C で libturbojpeg を使用して平面 4:2:0 YUV バッファを jpeg 画像に圧縮したいのですが、tjCompressFromYUV()
関数の使用に問題があります。
これは私のコードです:
によって返されるエラー文字列tjGetErrorStr()
は "Bogus input colorspace" です。
libturbojpeg バージョン 1.4.2 と 1.4.90 をリンクしてみました。
どんな助けでも大歓迎です、
ありがとう
jpeg - libjpeg-turbo の圧縮速度は、私のプログラムでは libjpeg との違いはありません
私のプログラムはAndroidデバイスで実行され、デバイスはNEONがサポートされているARMシステムです。
最初に libjpeg を使用して RGB 画像 (800*480) を jpeg に圧縮しました。速度は1枚あたり70ms程度でしたが、私には遅すぎました。後で libjpeg-turbo を見つけました。ARM の NEON で圧縮速度を向上できるようです。
しかし、コンパイルしてテストした後、圧縮速度はほぼ同じであることがわかりました。また、tjCompress2 に渡される品質とフラグの変更も効果がありませんでした。プログラムに何かが間違っているのか、それとも何かが欠けているのか、私にはわかりません。以下のコード:
jpeg buffer(out) は自分で割り当てて解放します。
私が使用する libjpeg-turbo のバージョンは 1.4.2 です
c - libjpegのJCS_RGBとJCS_EXT_RGBの違いは何ですか?
JCS_EXT_RGB は JCS_RGB とどのように異なりますか? また、それぞれをいつ使用する必要がありますか?
image - 65500 * 65500 ピクセルを超える jpeg 画像を正しく開く/デコードするにはどうすればよいですか?
Hamamatsu NanoZoomer スライド スキャナで生成されたファイルから画像コンテンツを抽出しようとしています。NDPI ファイルは、変更された TIFF 構造を使用し、画像コンテンツを JPEG 形式の 1 つの大きなチャンクに格納します。StripOffsets と StripByteCounts を使用して、JPEG ファイルと思われるデータを抽出できました。
データ ストリームには、スキャン マーカーの開始である FFD8 やスキャン マーカーの終了である FFD9 など、JPEG ファイルの正しい署名がすべて含まれています。これが 65500*65500 ピクセルより小さい画像の場合、データ ストリームを jpeg ファイルに保存すれば、問題なくファイルを開くことができます。
JFIF ヘッダーでは、FFC0 マーカーの後の 3 番目と 4 番目のバイトは画像の高さを表します。その後の 2 バイトは画像の幅を表します。ただし、65500*65500 ピクセル (実際には 122880*78848 ピクセル) より大きいイメージの場合、イメージの高さとイメージの幅を表すと思われるこれらの 4 バイトはすべてゼロです。これに続いて、 255、220、255、220に変更しました (255 ~ 263 行目)。Windows で jpeg 情報を右クリックして詳細を選択すると、実際のピクセル解像度を表していないにもかかわらず、Windows フォト ビューアーが解像度を 65500*65500 として読み取ることがわかりました。問題は、画像を開こうとしたときに、明らかに間違った方法でデコードされていることです。
だから私の質問は次のとおりです。どうすればそのような jpeg ファイルを正しく開くことができますか? または、そのような画像コンテンツ全体をメモリに正しくデコードするにはどうすればよいでしょうか?
現在、MATLAB を使用してファイル構造を理解しようとしています。最終的には、Python + OpenCV (または必要に応じて Python + Cython + libjpeg-turbo を使用) を使用して、イメージ全体をメモリに読み込みます。
c - 「空の入力ファイル」を返すlibjpegturboを使用してjpegを解凍する
タイトルの通り、libjpeg-turboでJPEGファイルを読もうとしています。自宅の Mac でこのコードを試してみましたが、うまくいきましたが、今は Windows を使用しておりEmpty input file
、呼び出し時にエラーが発生しjpeg_read_header
ます。fseek/ftell を実行して、ファイルが空でないことを確認しました。取得したサイズは、期待どおりのサイズです。
私の最初の考えは、ファイルをバイナリ モードで開いていない可能性があるということでした。そのため、_setmode を使用してそれも試しましたが、役に立たなかったようです。参照用の私のコードは次のとおりです。
どんな助けでも大歓迎です!