1

クライアントでJPEG画像を圧縮する必要があるSilverlightアプリケーションを開発しました。私はこの目標を達成するためにFJCoreと呼ばれるライブラリを使用してきました。

ただし、私が直面している最大の問題の1つは、このツールキットでは、最初にJPEGをWriteableBitmapに変換して、EXIF、XMP、JFIFなどのJPEGに関連付けられているすべてのメタデータを削除する必要があるという事実です。 FJCoreライブラリのソースを変更して、EXIFを永続化し、イメージを圧縮してから、EXIFデータを再添付します。このプロセスは機能しますが、他のタイプのメタデータ情報は失われます。

JPEG形式に存在するさまざまな種類のメタデータを保存および書き込む関数を実装する代わりに、種類や形式に関係なく、すべてのメタデータを抽出できる単純化されたアプローチを探しています。FJCoreツールキットを使用してその画像を圧縮/サイズ変更してから、以前に保存したすべてのメタデータを再添付します。私の目標を達成するのに役立ついくつかの方向性またはサンプルコードをいただければ幸いです。これはSilverlightアプリケーションであるため、これらの.NETライブラリを使用する必要があることを忘れないでください。

ありがとうございました。

4

1 に答える 1

1

これは、FJCore、別名ImageToolsを使用して行うことができます。あなたがする必要があるのは行212にこれを追加することです:

// Exif.  Do something?
headers.Add(header);

https://github.com/briandonahue/FluxJpeg.Core/blob/master/FJCore/Decoder/JpegDecoder.cs

また、サイズを変更するときは、必ずこれらのヘッダーをコピーしてください。

jpegOut = new DecodedJpeg(
    new ImageResizer(jpegIn.Image)
        .Resize(320, ResamplingFilters.NearestNeighbor),
    jpegIn.MetaHeaders); // Retain EXIF details

再コンパイルすれば、うまくいくはずです。

于 2014-06-21T23:52:16.663 に答える