0

画像をアップロードして縦横比を保ったままリサイズしてサーバーに保存したい。画像の幅を200pxにすることをお勧めします。そうすれば、画像は左から右にピクチャボックスを埋めます。それを達成する方法がわかりません。現在、FileUpload コントロールを使用しています。画像はストリームにアップロードされ、変換され、ファイル システムに保存します。私はここで何か間違ったことをしていることを知っています。

string type = FileUpload1.PostedFile.ContentType;

byte[] snap = new byte[FileUpload1.PostedFile.ContentLength];

System.IO.Stream stream = FileUpload1.FileContent;

System.Drawing.Image imageLarge = System.Drawing.Image.FromStream(stream);
System.Drawing.Image imageLarge1 = ResizeImage(imageLarge, 200, 300);
MemoryStream memolarge = new MemoryStream();
imageLarge1.Save(memolarge, System.Drawing.Imaging.ImageFormat.Jpeg);
System.Drawing.Image returnImage = System.Drawing.Image.FromStream(memolarge);
4

2 に答える 2

0

使用しているタラは正しいです。ただし、アスペクト比は考慮されていません。

アスペクト比を計算するには、画像の実際の幅と高さを計算し、アップロードされた画像の比率を計算する必要があります。

その比率を取得したら、その比率を適用して画像のサイズを変更する必要があります。

于 2012-10-04T06:38:20.540 に答える
0

縦横比を維持して正しい高さを設定する必要があります。

int newHeight = ActualImgHeight*200/ActualImgWidth;
Bitmap bmp = new Bitmap(200, newHeight);
Graphics g = Graphics.FromImage((Image)bmp);
g.InterpolationMode = InterpolationMode.HighQualityBilinear;
g.CompositingQuality = CompositingQuality.HighQuality;
g.SmoothingMode = SmoothingMode.HighQuality;
g.DrawImage(imgToResize, 0, 0, 200, newHeight);
g.Dispose();
bmp.Save(path,System.Drawing.Imaging.ImageFormat.Jpeg);

お役に立てれば。

于 2012-10-04T08:43:27.413 に答える