私は奇妙な問題を抱えています-私は約1450万のビットマップ画像を持っていますが、それはおそらく非圧縮です。これらのビットマップをJPGに変換し、データベースに保存する必要があります。
.NET System.Drawingライブラリで提供されているクラスを使用してビットマップをImageFormat.Jpegとして保存すると、結果のJPEGは元のビットマップの約2倍のサイズになります。コードは次のとおりです。
byte[] bitmapBytes = //get from the db
using(MemoryStream bitmapStream = new MemoryStream(bitmapBytes))
{
using(Bitmap bitmap = (Bitmap)Bitmap.FromStream(bitmapStream))
{
bitmap.Save("jpg.jpg", ImageFormat.Jpeg);
}
}
これらの画像のいくつかのHEXを調べましたが、圧縮設定が「なし」のようです。だから私はそれらが非圧縮であると仮定しています。さらに、元のファイルのHEXには「BMP」コードが含まれ、結果のファイルには予想どおり「JFIF」コードが含まれます。
画像は白黒で、色はありません。
なぜこれが起こるのかについて何か考えはありますか?正しい方向へのポインタを探しています...
編集:
- 品質を指定できる代替のオーバーロードを使用して保存してみました。メリットは見られません。
- また、ここである程度JPEGにこだわっていることを指定する必要があります。これはレガシーシステムであり、システムの他の部分はJPEGを想定しています。
画像属性:
- ビットマップのサイズ:152x48
- ビットマップファイルサイズ:1022バイト
- JPEG:同じ寸法
- JPEGサイズ:2.2 kb
- ビットマップ情報:インデックス付き、1レイヤー(2色)
- ビットマップ解像度:96.012x 96.012 ppi