2

こんにちはみんな私は C# で画像のサイズを変更し、.png として保存しています。

public static Bitmap resize(int x, int y, Image p)
{
    Bitmap Img = new Bitmap(x,y);
    using (Graphics gr = Graphics.FromImage(Img))
    {
        gr.SmoothingMode = SmoothingMode.HighQuality;
        gr.InterpolationMode = InterpolationMode.HighQualityBicubic;
        gr.PixelOffsetMode = PixelOffsetMode.HighQuality;
        gr.DrawImage(p, new Rectangle(0, 0, x, y));
    }
    return Img;
}

問題は、ユーザーが Galaxy や iPhone などのハイエンド スマートフォンからの画像などの高品質の画像をアップロードすると、サイズ変更された画像のファイルサイズが非常に大きくなることです。サイズ変更された画像のファイル サイズとピクセル サイズの表を作成しました。

1) Img1  1280 * 666px => 458 kb
2) Img1  300 * 399px => 221kb
3) Img2  1280 * 1444px => 2.08mb
4) Img2  300 * 451px => 327kb

例として補間とスムージングを高品質に設定し、透明性を維持するために画像を .png として保存していることを知っています。しかし、HTML ページに最適な妥当な品質とファイルサイズの画像を取得するには、どの設定を変更すればよいでしょうか。私の最終目標は、画質とファイルサイズの間で妥協することです。だから、私が自分で選択できるように、サイズ変更された画像の品質のFilsesizeと品質の比較を示すリンクを教えてください。

4

2 に答える 2

3

で遊べるオプションが 1 つありますPixelFormat

using (Bitmap bmp = new Bitmap(x, y, 
         System.Drawing.Imaging.PixelFormat.Format32bppArgb))
{
    using (Graphics gr = Graphics.FromImage(bmp))
    {

        gr.SmoothingMode = SmoothingMode.HighQuality;
        gr.InterpolationMode = InterpolationMode.HighQualityBicubic;
        gr.PixelOffsetMode = PixelOffsetMode.HighQuality;
        gr.DrawImage(src, new Rectangle(0, 0, x, y));
    }
}

32 ビット Argb は、アルファ チャネルが必要な場合にのみ使用してください (たとえば、画像が透明な場合)。を照会しimg.PixelFormatて、画像にアルファ チャネルが含まれているかどうかを確認することもできます。この場合、PNG として保存する必要はなく、JPG を使用できます。これにより、ファイルがはるかに小さくなります!

通常のjpgは通常使用しますFormat24bppRgb

于 2013-09-24T17:14:30.373 に答える
1

代わりに JPEG を使用し、必要な品質に合わせて圧縮を調整します。

于 2013-09-24T17:15:57.677 に答える