一部の画像のサイズをユーザーの画面解像度に合わせています。アスペクト比が間違っている場合は、画像をカットする必要があります。私のコードは次のようになります。
protected void ConvertToBitmap(string filename)
{
var origImg = System.Drawing.Image.FromFile(filename);
var widthDivisor = (double)origImg.Width / (double)System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width;
var heightDivisor = (double)origImg.Height / (double)System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height;
int newWidth, newHeight;
if (widthDivisor < heightDivisor)
{
newWidth = (int)((double)origImg.Width / widthDivisor);
newHeight = (int)((double)origImg.Height / widthDivisor);
}
else
{
newWidth = (int)((double)origImg.Width / heightDivisor);
newHeight = (int)((double)origImg.Height / heightDivisor);
}
var newImg = origImg.GetThumbnailImage(newWidth, newHeight, null, IntPtr.Zero);
newImg.Save(this.GetBitmapPath(filename), System.Drawing.Imaging.ImageFormat.Bmp);
}
ほとんどの場合、これは正常に機能します。ただし、一部の画像では、結果の品質が非常に低くなります。非常に小さいサイズ(サムネイルサイズ)にサイズ変更され、再び拡大されたように見えます。ただし、画像の解像度は正しいです。私に何ができる?
元の画像の例: 代替テキストhttp://img523.imageshack.us/img523/1430/naturaerowoods.jpg
注:私はWPFアプリケーションを持っていますが、サイズ変更にはWinForms関数を使用しています。これは、サイズ変更が簡単であり、トレイアイコンのSystem.Windows.Formsへの参照がすでに必要なためです。