0

MVC3を使用してWebフォームを介して画像のコレクションを送信しています。この投稿された画像を受信し、その名前をdbに保存するコントローラー。

[HttpPost]
public ActionResult Edit(MyViewModel data, IEnumerable<HttpPostedFileBase> postedImages)
{
   if (ModelState.IsValid)
   {
      using (session...and transaction...)
      {
         MyModel model = session.Get<MyModel>(data.Id);                           
         data.SendToDomainModel(model, session);                     
         foreach (var image in postedImages)
         {
            if ((image != null) && (image.ContentLength > 0))
            {
                Photo photo = new Photo();
                var fileName = Path.GetFileName(image.FileName);
                // path used to save actuall image to the hdd path
                var pathToSave = Path.Combine(Server.MapPath("~/Content/uploads"), fileName);
                // path used to save image path inside db column
                var path = Path.Combine("/Content/uploads/" + fileName);
                photo.MyModel= session.Load<MyModel>(model.Id);
                photo.Path = path;
                photo.Name = fileName;
                image.SaveAs(pathToSave);
                model.Photos.Add(photo);
              }
           }
           // commit transaction ..
           // save session ..
       }
       return RedirectToAction("Index");
    }
    else { return View(data); }
}

画像コレクションの最初の画像を使用して、ファイル名のプレフィックスが「firstImage」の画像をコピーし、50x50pxのサイズにトリミングするにはどうすればよいですか?

ありがとう

4

1 に答える 1

1

System.Drawingを使用すると、最適化されていない単純なサイズ変更を実現できます。GetThumbnailImage

例:

Image thumb=image.GetThumbnailImage(50, 50, null, IntPtr.Zero);

ここにリストされている落とし穴がない、より最適化された方法については、以下を参照してください。

このSOの答え

于 2012-12-11T15:25:22.550 に答える