1

画像のサイズを変更できるコードが必要ですが、次の機能があります。

1)アップロード時に画像のサイズを変更する

2)高さまたは幅のいずれかを指定して、画像のサイズを比例的に変更します。

ノート:

  • ASP.NET C#で実行する必要があります

例:関数は、幅または高さを取得し、指定された高さまたは幅に比例して画像のサイズを変更する必要があります。画像が400(w)x100(h)であるとしましょう。画像を特定の高さ、たとえば80pxにサイズ変更するように関数に指示したいと思います。この関数は、画像の高さを80pxに設定し、それに応じて幅を設定しながら、画像のサイズを比例的に変更する必要があります。もう1つのオプションは、関数に幅、たとえば200pxを指定することです。関数は、画像のサイズを200pxの幅に変更し、それに応じて高さを設定する必要があります。

3)画像を特定の場所(パス)に保存します。

4)関数は、アップロードされた画像を処理するか、画像パスを指定することで機能します。

5)画質を選べるようにしたい

6)これはJPEGにのみ必要です

誰かがこれを手伝ってくれませんか。ありがとう。

4

4 に答える 4

4

これを行うにはスニペットをコピーして貼り付ける必要があるように思えますが、独自の画像サイズ変更システムを構築する場合は注意が必要な落とし穴がたくさんあります。実績があり、テストされ、サポートされているオープンソース ライブラリを使用することをお勧めします。

HttpPostedFile から直接ファイルのサイズを変更するには、次を呼び出します。

ImageBuilder.Current.Build(httpPostedFile, "img.jpg", new ResizeSettings("width=200&quality=90"));

既存のファイルのサイズを変更するには、呼び出します

ImageBuilder.Current.Build("orig.jpg", "img.jpg", new ResizeSettings("width=200&quality=90"));

ImageResizing.Netライブラリは無料で、MIT ライセンスです (ライセンスの問題について心配する必要はありません) 。

于 2011-07-28T12:02:16.147 に答える
3

この Stackoverflowの回答から取得すると、次のようになります。

public static Image Resize(this Image image, int maxWidth = 0, int maxHeight = 0)
    {
        if (maxWidth == 0)
            maxWidth = image.Width;
        if (maxHeight == 0)
            maxHeight = image.Height;

        var ratioX = (double)maxWidth / image.Width;
        var ratioY = (double)maxHeight / image.Height;
        var ratio = Math.Min(ratioX, ratioY);

        var newWidth = (int)(image.Width * ratio);
        var newHeight = (int)(image.Height * ratio);

        var newImage = new Bitmap(newWidth, newHeight);
        Graphics.FromImage(newImage).DrawImage(image, 0, 0, newWidth, newHeight);
        return newImage;
    }

maxWidth を指定して画像のサイズを変更するには:

var _image = Image.FromStream(Source);
var _thumbImage = _image.Resize(100);

maxHeight を指定して画像のサイズを変更するには:

var _image = Image.FromStream(Source);
var _thumbImage = _image.Resize(maxHeight: 100);
于 2013-01-05T08:31:05.290 に答える
0

これは私のプロジェクトで行われている方法です

ファイルのアップロード中にボタンをクリックすると:

System.Drawing.Bitmap bmpPostedImage = new System.Drawing.Bitmap(File1.PostedFile.InputStream);
     System.Drawing.Image objImage = ScaleImage(bmpPostedImage, 81);
     objImage.Save(SaveLocation,ImageFormat.Png);
     lblmsg.Text = "The file has been uploaded.";

public static System.Drawing.Image ScaleImage(System.Drawing.Image image, int maxHeight)
        {
            var ratio = (double)maxHeight / image.Height;
    
            var newWidth = (int)(image.Width * ratio);
            var newHeight = (int)(image.Height * ratio);
    
            var newImage = new Bitmap(newWidth, newHeight);
            using (var g = Graphics.FromImage(newImage))
            {
                g.DrawImage(image, 0, 0, newWidth, newHeight);
            }
            return newImage;
        }
于 2012-08-17T12:41:55.257 に答える