+ Yanıtla
Sayfa Düzeni: 2 / 2
İlkİlk 1 2
Toplam 12 sonuçtan 11 ile 12 arası olanlar

Konu Başlığı: ASP.NET ve C# ile Image Resize

  1. #11

    Re: ASP.NET ve C# ile Image Resize

    Alttaki şekilde yapınca oldu. Teşekkürler yardımınız için.

    Kod:
    <%@ Page Language="C#" %>
    <%@ Import Namespace="System.Drawing"%>
    <%@ Import Namespace="System.IO"%>
    
    <script runat="server">
        void Page_Load(){
            int yeniW = Convert.ToInt16(Request.QueryString["gen"]);
            int yeniH = Convert.ToInt16(Request.QueryString["yuk"]);
    
            string adres = Convert.ToString(Request.QueryString["adres"]);          
    
            Response.ContentType="image/jpg";
            string URI = server.MapPath("images/resim/"+adres);
    
            using (Bitmap uploadedimage = new Bitmap(URI))
    	{
    	decimal genislik = uploadedimage.Width;
    	decimal yukseklik = uploadedimage.Height;
    	         
    	decimal gen_oran = (decimal) genislik / yeniW;
    	decimal yuk_oran = (decimal)yukseklik / yeniH;
    	        
    	int olacak_gen, olacak_yuk;  
    
    	if (gen_oran > yuk_oran)
    	{
    	olacak_gen = (int)(genislik / yuk_oran);
    	olacak_yuk = yeniH;
    	}
    	else {
    	olacak_gen = yeniW;
    	olacak_yuk = (int)(yukseklik / gen_oran);
    	}
    	System.IO.Stream wClient = new System.Net.WebClient().OpenRead(URI);
    	System.Drawing.Bitmap DestImage = new System.Drawing.Bitmap(uploadedimage.Width, uploadedimage.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
    	System.Drawing.Graphics.FromImage(DestImage).DrawImage(System.Drawing.image.FromStream(wClient), new System.Drawing.Rectangle(0, 0, uploadedimage.Width, uploadedimage.Height), new System.Drawing.Rectangle(0, 0, uploadedimage.Width, uploadedimage.Height), System.Drawing.GraphicsUnit.Pixel);
    	using (System.Drawing.Bitmap imgOutput = new System.Drawing.Bitmap(DestImage, olacak_gen, olacak_yuk))
    		{
    		Graphics myresizer;
    		myresizer = Graphics.FromImage(imgOutput);
    		myresizer.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
    		myresizer.DrawImage(DestImage, 0, 0, olacak_gen, olacak_yuk);
    
    		imgOutput.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
    		imgOutput.Dispose();
    		wClient.Close();
    		wClient.Dispose();
    		}
    	}
        }
    </script>

  2. #12

    Güzel bir kod yazmışsınız

    Merhabalar,

    @absconder ve @Dd_LynCh arkadaşlarıma yazdıkları koddan dolayı teşekkür ederim.

    Sizin de bildiğiniz gibi sitenin yüklenmesi açısından hız çok önemli. Hız içinde thumbnail dediğimiz küçük resimlerinin yalnızca ebatlarının değil boyutlarınında küçülmesi gerekebiliyor. Bu sebeple @Dd_LynCh 'ın yazdığı kodda bazı fazlalıkları çıkararak, resmin kalitesini düşürmeyi de ekledim. Bir de yeni başlayan arkadaşlara kolaylık olsun diye değişkenleri mümkün mertebe türkçe kullanmaya çalıştım.

    PHP Kodu:
    using System;
    using System.Drawing;
    using System.Drawing.Imaging;

    public 
    partial class test System.web.UI.Page
    {

    protected 
    void Page_Load(object senderEventArgs e)
    {
    ResimGetir("images/urunler/1.jpg");
    }

    protected 
    void ResimGetir(string resim)
    {

    try
    {
    int yeni_genislik 200;
    int yeni_yukseklik 200;

    Response.ContentType "image/jpg";

    using (Bitmap alinan_resim = new Bitmap(server.MapPath(resim)))
    {
    decimal genislik alinan_resim.Width;
    decimal yukseklik alinan_resim.Height;

    decimal genislik_oran = (decimal)genislik yeni_genislik;
    decimal yukseklik_oran = (decimal)yukseklik yeni_yukseklik;

    int olacak_genislikolacak_yukseklik;

    if (
    genislik_oran yukseklik_oran)
    {
    olacak_genislik = (int)(genislik yukseklik_oran);
    olacak_yukseklik yeni_yukseklik;
    }
    else
    {
    olacak_genislik yeni_genislik;
    olacak_yukseklik = (int)(yukseklik genislik_oran);
    }

    using (Bitmap Resim_Ciktisi = new Bitmap(alinan_resimolacak_genislikolacak_yukseklik))
    {

    EncoderParameters enkoder_parametresi;
    enkoder_parametresi = new EncoderParameters(1);
    enkoder_parametresi.Param[0] = new EncoderParameter(Encoder.Quality,30L);

    // ISTERSENIZ 30L KISMINI 100L YAPIP, AŞAĞIDA Kİ SATIRLARI DA DEVREYE SOKABİLİRSİNİZ.

    /*
    Graphics.FromImage(Resim_Ciktisi).CompositingQuality = CompositingQuality.HighSpeed;
    Graphics.FromImage(Resim_Ciktisi).SmoothingMode = SmoothingMode.HighSpeed;
    Graphics.FromImage(Resim_Ciktisi).PixelOffsetMode = PixelOffsetMode.HighQuality;
    Graphics.FromImage(Resim_Ciktisi).InterpolationMode = InterpolationMode.HighQualityBicubic;
    */

    Resim_Ciktisi.Save(Response.OutputStreamEnkoderBul(ImageFormat.Jpeg), enkoder_parametresi);
    Resim_Ciktisi.Dispose();
    }

    }

    }

    catch (
    System.ArgumentException)
    {
    ResimYok();
    }

    }

    private 
    ImageCodecInfo EnkoderBul(ImageFormat format)
    {

    ImageCodecInfo[] resim_kodekleri ImageCodecInfo.GetImageDecoders();

    foreach (
    ImageCodecInfo i in resim_kodekleri)
    {
    if (
    i.FormatID == format.Guid)
    {
    return 
    i;
    }

    }

    return 
    null;
    }

    void ResimYok()
    {
    Response.ContentType "image/gif";
    Bitmap resimyok = new Bitmap(server.MapPath("images/no-image.gif"));
    resimyok.Save(Response.OutputStreamImageFormat.Gif);
    }


    Umarım birilerinin işine yarar.
    Aza sormuşlar nereye gidiyorsun diye. Çoğun yanına demiş. :confused:

+ Yanıtla
Sayfa Düzeni: 2 / 2
İlkİlk 1 2

Bu konu başlığı için etiketler

Mesaj Seçenekleri

  • Yeni başlık açamazsınız
  • Cevap yazabilirsiniz
  • Dosya ekleyemezsiniz
  • Mesajlarınızı değiştiremezsiniz