デジタルカメラから出力されたばかりの画像は、多くの場合2〜3 MBのサイズを超えているため、電子メールやその他の方法で転送するのは困難です。これには、画像のサイズを変更する必要があります(高さや幅ではなく、ファイルサイズの観点から)。画像のサイズ変更機能を提供するMSペイントと非常によく似ています。私は画像ファイル理論について十分な教育を受けていません。誰かが私を次の情報源に向けることができれば幸いです:
画像理論(さまざまな画像形式がjpeg、png、tiffなどでどのように機能するか)?
サイズを変更すると、画像の鮮明さがどのように失われますか?ありますか
これを行うために利用できる無料の.Net(私は4.0を使用しています)ライブラリはありますか?そうでない場合は、comの相互運用性を使用してライブラリを使用できますか?
どうもありがとう、
画像のサイズ変更は、機能が.NETFrameworkに直接組み込まれていることです。いくつかの異なるアプローチがあります:
これがいいですね ブログ投稿 それらの違いをカバーしています。
GDI +の例を次に示します。
public void Resize(string imageFile, string outputFile, double scaleFactor)
{
using (var srcImage = Image.FromFile(imageFile))
{
var newWidth = (int)(srcImage.Width * scaleFactor);
var newHeight = (int)(srcImage.Height * scaleFactor);
using (var newImage = new Bitmap(newWidth, newHeight))
using (var graphics = Graphics.FromImage(newImage))
{
graphics.SmoothingMode = SmoothingMode.AntiAlias;
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
graphics.DrawImage(srcImage, new Rectangle(0, 0, newWidth, newHeight));
newImage.Save(outputFile);
}
}
}
私はDarinDimitrovによって提供された例を使用しました。イメージは膨らみ、多くのディスクスペース(1.5MBから17MB程度)を占有しました。
これは、コードの最後の行にある小さな間違いが原因です。
以下の関数は、画像をビットマップ(巨大な画像サイズ)として保存します。
newImage.Save(outputFile)
正しい関数は次のとおりです。
newImage.Save(outputFile, ImageFormat.Jpeg);
Imageresizerはうまく機能します。 http://imageresizing.net/