1

したがって、ファイルのアップロードを処理するアクションがあります。私がしていることは、ファイルサイズが 100kb かどうかを確認することです。そうでない場合は、特定の幅と高さにサイズ変更します (ただし、それが目的のサイズに移動する正しい方法であるかどうかはわかりませんが、考えていますか?)

そして、それを自分のウェブサイトのサブドメインに保存する予定です.

アクションはこんな感じ

public ActionResult New(string account, int id, HttpPostedFileBase file)
        {
            if (file == null)
            {
                ModelState.AddModelError("", "File not found.");
                return View();
            }

            if (!ImageUpload.FileTypeValid(file.ContentType))
            {
                ModelState.AddModelError("", "File type is invalid. Please choose a different file.");
                return View();
            }

            if (file.ContentLength > 100)
            {
                Image image = ImageUpload.ResizeFile(file, 100, 100);
            }

            try
            {

                icdb.SaveChanges();
                ModelState.AddModelError("", "Sucesfully saved Image.");
                return RedirectToAction("Details", "OfAController", new { account = account, id= id});
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message);
            }

            return View();
        }

これがリサイズ方法です

static public Image ResizeFile(HttpPostedFileBase file, int targeWidth, int targetHeight)
        {
            Image originalImage = Image.FromStream(file.InputStream, true, true);
            var newImage = new MemoryStream();
            Rectangle origRect = new Rectangle(0, 0, originalImage.Width, originalImage.Height);
            // if targets are null, require scale. for specified sized images eg. Event Image, or Profile photos.
            int newWidth = targeWidth;
            int newHeight = targetHeight;
            var bitmap = new Bitmap(newWidth, newHeight);

            try
            {
                using (Graphics g = Graphics.FromImage(bitmap))
                {
                    g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                    g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
                    g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
                    g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                    g.DrawImage(originalImage, new Rectangle(0, 0, newWidth, newHeight), origRect, GraphicsUnit.Pixel);
                    bitmap.Save(newImage, originalImage.RawFormat);
                }
                return (Image)bitmap;
            }
            catch
            {   // error before IDisposable ownership transfer
                if (bitmap != null)
                    bitmap.Dispose();
                throw new Exception("Error resizing file.");
            }
        }

だから私の問題は、このサイズ変更されたファイルを自分のディレクトリに保存する方法を見つけようとしていることです。そして、サイズを変更する前に最初に画像をアップロードする必要があることに気づき続けますか? そうですか?または、ディレクトリに保存する前にサイズを変更する方法はありますか?

考え?

ありがとう!

4

0 に答える 0