1

画像のサイズを変更するための次のコーディングがあり、それを仮想フォルダー「vicpic/scimages」に保存します

  if (FileUpload5.PostedFile != null)
    {
        if (FileUpload5.PostedFile.ContentLength > (1024 * 1024))
        {
            Label4.Text = "Upload status: The file has to be less than 1 MB. Please resize your photo and than upload it again.";
        }
        else
        {
            System.Drawing.Image imageToBeResized = System.Drawing.Image.FromStream(FileUpload5.PostedFile.InputStream);
            int imageHeight = imageToBeResized.Height;
            int imageWidth = imageToBeResized.Width;
            int maxHeight = 660;
            int maxWidth = 560;
            imageHeight = (imageHeight * maxWidth) / imageWidth;
            imageWidth = maxWidth;
            if (imageHeight > maxHeight)
            {
                imageWidth = (imageWidth * maxHeight) / imageHeight;
                imageHeight = maxHeight;
            }
            Bitmap bitmap = new Bitmap(imageToBeResized, imageWidth, imageHeight);
            System.IO.MemoryStream stream = new MemoryStream();
            // bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
            stream.Position = 0;
            byte[] image = new byte[stream.Length + 1];
            stream.Read(image, 0, image.Length);

            string FileName = Path.GetFileName(FileUpload5.PostedFile.FileName);
            //Save files to disk
            string extension = Path.GetExtension(FileUpload5.PostedFile.FileName);
            //Path.Combine(Server.MapPath("~/vicpic/scimages"), imageName);
            string imagename = DropDownList2.SelectedItem.Text + "4" + extension;


            bitmap.Save(Server.MapPath("~/vicpic/scimages/") + imagename);

            bitmap.Dispose();
            imageToBeResized.Dispose();
            GC.Collect();



            try
            {
                con.Open();
                cmd.ExecuteNonQuery();
            }

            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }

            finally
            {
                con.Close();
                con.Dispose();
                Label4.Text = "Upload status:Successfully.";

            }
        }

    }

しかし、それはGDI +で一般的なエラーが発生したことを示しています

誰でも問題がどこにあるのか提案できますか?

ホスト サーバーの「vicpic/scimages」フォルダに画像を保存したいと考えています。これは仮想ディレクトリであり、ディレクトリに必要なすべての権限も付与しています。

4

2 に答える 2

4

私も同じ問題を抱えていました。オブジェクトが作成されたメモリストリームは、オブジェクトの保存時に開いている必要があるようです。コードとテキストを重複させないために、このQ&Aを見てください:GDI +、JPEGイメージからMemoryStreamで一般的なエラーが発生しました

したがってbitmap.Save(Server.MapPath("~/vicpic/scimages/") + imagename);、コードの代わりに次のようになります。

using (var m = new MemoryStream())
{
       bitmap.Save(m, ImageFormat.Jpeg);
       var img = Image.FromStream(m);
       img.Save(Server.MapPath("~/vicpic/scimages/") + imagename);
}
于 2012-07-02T11:34:30.193 に答える
0

これは古い質問であることは知っていますが、これは私が提供したい単なる私の意見です。同じ問題を抱えている人を助けることができれば、それで十分です。自分の Web サイトの 1 つでこのエラーが発生しましたが、何が起こっているのかわからなかったので、STACK でいくつかの回答を見つけた後、それが許可エラーであることに気付きました。すべてがうまくいったことを修正した後、私の別のWebサイトで同じエラーが発生し、すぐにフォルダーのアクセス許可を変更しましたが、今回は修正されませんでした. 何日も格闘した後、問題は単なるフォルダー名のスペルミスであることに気付きました。

于 2014-08-20T06:31:53.403 に答える