none
Asp.net Mvc İmage Resize RRS feed

  • Soru

  • Merhaba;

    asp.net mvc de image resize işlemi yapmaya çalışıyorum.Veri tabanına byte olarak kaydediyorum.

    Resimlerim Kullanıcılara 1732*1155 genişlikte gösterecem. Fakat resmimin sağ tarafını hep boş bırakıyor.Boş bırakıp bırakmadığını görmek için resmi kırmızıya boyuyorum.

    Resmin tam oturmasını nasıl sağlayabilirim. Nerede hata Yapıyorum.

    Teşekkürler.

     public ActionResult Create(string Slogan,string Slogan2,int sirano,HttpPostedFileBase Image,string Icerik )
            {
                using (var db = new Entiti())
                {
                 
                  var _slider = new Slider()
                    {
                        Slogan=Slogan,
                        Slogan2=Slogan2,
                        Sirasi=sirano,
                        Image = ImageHelper.ResizeImage(Image, 1732,1155),
                        Icerik=Icerik
    
                    };
                    db.Sliders.Add(_slider);
                    db.SaveChanges();
                }
                return RedirectToAction("Index");
            }

    public static byte[] ResizeImage(HttpPostedFileBase PostedFile,int Width,int Height)
            {
                byte[] _result = null;
                using(Image _sourceImage= new Bitmap(PostedFile.InputStream))
                {
                    int _newWidth = _sourceImage.Width;
                    int _newHeight = _sourceImage.Height;
    
    
    
                    //eğer gelen yükseklik bizim istediğimiz yükseklikten büyükse
                    if (_sourceImage.Width > Width)
                    {
                        //yeni genişlik bizim verdiğimiz genişlik olacak
                        _newWidth = Width;
                        //yeni yükseklikte bizim verdiğimiz genişliğin gelen genişliğe bölüp gelen yüksekliğe çarpımı olacak
                        _newHeight =(int)((Width / (float)_sourceImage.Width) * _sourceImage.Height);
                            
    
                    }
    
    
    
                  
    
    
    
                   
    
    
                    using (Image _destinationImage=new Bitmap(_newWidth,_newHeight))
                    {
                        Graphics _g = Graphics.FromImage(_destinationImage);
                        _g.Clear(Color.Red);
                        _g.DrawImage(_sourceImage, 0, 0, _newHeight, _newWidth);
                        _g.DrawString("bodrumdanismanlik", new Font(FontFamily.GenericSerif, 15f), new SolidBrush(Color.FromArgb(128,0,0,0)), new PointF(0, 0));
                        MemoryStream _ms = new MemoryStream();
                        _g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Bicubic;
                        _g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
                        _destinationImage.Save(_ms, ImageFormat.Jpeg);
                        _result = _ms.ToArray();
                    }
                }
                return _result;
    
            }

    6 Mart 2016 Pazar 11:14

Yanıtlar

  • O zaman yüksekil, genişlik gibi şeylere ihtiyacınız yok

    Image image = Image.FromFile(@"C:\test\test.png");
                var newImage = new Bitmap(1733, 1300);
                Graphics.FromImage(newImage).DrawImage(image, 0, 0, 1733, 1300);
                newImage.Save(@"c:\test\newimage.png");
    bu kod image'in boyutu ne olursa olsun 1733,1300 yapar. bunu kendinize göre düzenleyin.

    6 Mart 2016 Pazar 13:04
  • Kendi web sitemde şu şekilde yapıyorum.

    public static Image ScaleImage(Image image, int maxWidth, int maxHeight)
            {
                var ratioX = (double)maxWidth / image.Width;
                var ratioY = (double)maxHeight / image.Height;
                var ratio = Math.Min(ratioX, ratioY);
    
                var newWidth = (int)(image.Width * ratio);
                var newHeight = (int)(image.Height * ratio);
    
                var newImage = new Bitmap(newWidth, newHeight);
                Graphics.FromImage(newImage).DrawImage(image, 0, 0, newWidth, newHeight);
                return newImage;
            }

    6 Mart 2016 Pazar 13:21

Tüm Yanıtlar

  • resmi nasıl resize etmek istiyorsunuz? verdiğiniz ölçülerde oran yaklaşık 1.5 bu orana göre mi yoksa resmin boyutu ne olursa olsun 1732*1155 boyutlarında mı gösterilecek?

    6 Mart 2016 Pazar 12:20
  • Öncelikle ilginiz için teşekkür ederim.

    Resmin boyutu ne olursa olsun 1732*1155 e çekmek istedim.

    6 Mart 2016 Pazar 12:37
  • O zaman yüksekil, genişlik gibi şeylere ihtiyacınız yok

    Image image = Image.FromFile(@"C:\test\test.png");
                var newImage = new Bitmap(1733, 1300);
                Graphics.FromImage(newImage).DrawImage(image, 0, 0, 1733, 1300);
                newImage.Save(@"c:\test\newimage.png");
    bu kod image'in boyutu ne olursa olsun 1733,1300 yapar. bunu kendinize göre düzenleyin.

    6 Mart 2016 Pazar 13:04
  • O zaman yüksekil, genişlik gibi şeylere ihtiyacınız yok

    Image image = Image.FromFile(@"C:\test\test.png");
                var newImage = new Bitmap(1733, 1300);
                Graphics.FromImage(newImage).DrawImage(image, 0, 0, 1733, 1300);
                newImage.Save(@"c:\test\newimage.png");
    bu kod image'in boyutu ne olursa olsun 1733,1300 yapar. bunu kendinize göre düzenleyin.

    Teşekkür ederim.

    Peki ya 1.5 oranında gösterseydim nasıl yapabilirdim ?

    6 Mart 2016 Pazar 13:09
  • Kendi web sitemde şu şekilde yapıyorum.

    public static Image ScaleImage(Image image, int maxWidth, int maxHeight)
            {
                var ratioX = (double)maxWidth / image.Width;
                var ratioY = (double)maxHeight / image.Height;
                var ratio = Math.Min(ratioX, ratioY);
    
                var newWidth = (int)(image.Width * ratio);
                var newHeight = (int)(image.Height * ratio);
    
                var newImage = new Bitmap(newWidth, newHeight);
                Graphics.FromImage(newImage).DrawImage(image, 0, 0, newWidth, newHeight);
                return newImage;
            }

    6 Mart 2016 Pazar 13:21
  • kendinize işkence ediyorsunuz... nuget ile Microsoft.AspNet.WebHelpers i indirin, içinde WebImage var, üyelik sistemi var, WebMail var, ReCaptcha var, Gravatar var ... var oğlu var...

    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    6 Mart 2016 Pazar 13:56
    Moderatör