3

私のソース画像は2288pxx1712pxと816kbです。1024 x 768のサムネイルを作成すると、ファイルサイズは高解像度ソースの2倍以上になります(使用する方法に応じて1.13mb〜1.8mb)。

作成されたソース画像とサムネイルは.jpgです

299 x 224のサムネイルを作成する場合でも180kbですが、GIMPで手動でサムネイルを作成する場合は14kbです。

見栄えの良い画像が必要なので、サイズの品質に妥協することはできません。

1.13MBのファイルを作成したImage.GetThumbnailImageを試しましたが、予期しない結果が生じる可能性があることを読みました。

ほとんどの記事はこの記事のようなコードを書くと言っています:http: //www.codeproject.com/KB/GDI-plus/imageresize.aspx

それは私に1.83mbのサムネイルを与えます。

デスクトップアプリケーションで同じことを行う場合と比較して、より大きなファイルサイズを期待する必要がありますか?

24ビットではなく16ビットを試し、「高品質」の値をコメントアウトしましたが、それでも1MB未満では取得できません。何か案は?

Bitmap bmPhoto = new Bitmap(destWidth, destHeight,PixelFormat.Format24bppRgb);
        bmPhoto.SetResolution(image.HorizontalResolution,image.VerticalResolution);

        Graphics grPhoto = Graphics.FromImage(bmPhoto);

        grPhoto.InterpolationMode = InterpolationMode.HighQualityBicubic;        
        grPhoto.SmoothingMode = SmoothingMode.HighQuality;
        grPhoto.PixelOffsetMode = PixelOffsetMode.HighQuality;
        grPhoto.CompositingQuality = CompositingQuality.HighQuality;

答えのために編集

私は圧縮が不足していました。私の1024サムネイルは112kbになりました。

Encoder qualityEncoder = Encoder.Quality;
//80L is the compression percentage
EncoderParameter ratio = new EncoderParameter(qualityEncoder, 80L);
// Add the quality parameter to the list
EncoderParameters codecParams = new EncoderParameters(1);
codecParams.Param[0] = ratio;

ImageCodecInfo jpegCodecInfo = GetEncoderInfo("image/jpeg");


bmPhoto.Save(Path.Combine(filepath, RenameImage(filename, appendName, replaceWholeString)), jpegCodecInfo, codecParams);


ImageCodecInfo GetEncoderInfo(string mimeType)    
{    
int j;    
ImageCodecInfo[] encoders;    
encoders = ImageCodecInfo.GetImageEncoders();

for(j = 0; j < encoders.Length; ++j)    
{    
if(encoders[j].MimeType.ToUpper() == mimeType.ToUpper())    
return encoders[j];    
}    
return null;    
}
4

2 に答える 2

2

これは、圧縮を使用していないか、非常に弱い圧縮 (RLE など) を使用しているように聞こえます。PNG、JPG (またはロスレスの JPG2000)、または GIF を試してください。

編集: JPG を使用する場合は、画質を下げてみてください。1024x768 のサムネイルは、1 MB よりもはるかに小さくても見栄えがよくなるはずです。

于 2009-02-24T15:29:40.273 に答える
1

ビットマップ形式が主な問題です。これは、他のフォーマットと比較すると常に巨大です。ビットマップはランレングスでエンコードされ、圧縮されていません。

画像が写真の場合は、JPEG が最適です。小さなファイルサイズで優れたビジュアル品質を得ることができます。線画で色があまりない場合は、GIF も良い選択肢かもしれません。FreeImageなど、優れた画像操作ライブラリがいくつかあります。

編集: JPEG から JPEG に変換するというコメントに気付きました...適切な圧縮の欠如は、フレームワークの組み込み画像機能の制限である可能性があります。

于 2009-02-24T15:28:44.503 に答える