1

これは私のaspxコードです:

<asp:FileUpload ID="FileUpload2" runat="server" Width="500px" />
            <asp:Button ID="btnUploadImg" runat="server" onclick="btnNahrajObrazek_Click" Text="Nahrát obrázek" Height="35px" Width="150px" />

これは私のコードビハインドです:

protected void btnUploadImg_Click(object sender, EventArgs e)
    {
        string input = Request.Url.AbsoluteUri;
        string output = input.Substring(input.IndexOf('=') + 1);
        string fileName = Path.GetFileName(FileUpload2.PostedFile.FileName);

        int width = 800;
        int height = 600;
        Stream stream = FileUpload2.PostedFile.InputStream;

        Bitmap image = new Bitmap(stream);

        Bitmap target = new Bitmap(width, height);
        Graphics graphic = Graphics.FromImage(target);
        graphic.DrawImage(image, 0, 0, width, height);
        target.Save(Server.MapPath("~/Uploads/" + output + "/") + fileName);
    }

アップロードする画像のアスペクト比を維持したいので、幅のみを設定するか、幅を 100% と高さ 400 などに設定する必要がありますか? しかし、それを行うことを知りません。

これができない場合は、画像のトリミングで十分ですが、まずはそれを改善したいと思います。

前もって感謝します!

4

1 に答える 1

2

だからここに私が見つけたものに基づいた私の解決策があります:http://www.nerdymusings.com/LPMArticle.asp?ID=32

string input = Request.Url.AbsoluteUri;
        string output = input.Substring(input.IndexOf('=') + 1);
        string fileName = Path.GetFileName(FileUpload2.PostedFile.FileName);

        Stream stream = FileUpload2.PostedFile.InputStream;

        Bitmap sourceImage = new Bitmap(stream);

        int maxImageWidth = 800;

        if (sourceImage.Width > maxImageWidth)
        {
            int newImageHeight = (int)(sourceImage.Height * ((float)maxImageWidth / (float)sourceImage.Width));
            Bitmap resizedImage = new Bitmap(maxImageWidth, newImageHeight);
            Graphics gr = Graphics.FromImage(resizedImage);
            gr.InterpolationMode = InterpolationMode.HighQualityBicubic;
            gr.DrawImage(sourceImage, 0, 0, maxImageWidth, newImageHeight);
            // Save the resized image:
            resizedImage.Save(Server.MapPath("~/Uploads/" + output + "/") + fileName);
        }
        else
        {
            sourceImage.Save(Server.MapPath("~/Uploads/" + output + "/") + fileName);
        }

シンプルで効果的だと思います。

于 2013-04-08T12:00:43.493 に答える