Zoque.Forum
Dirsek Teması:
Geri Dön Zoque.Forum » Webmaster Kaynaklari » Sunucu Tabanlı Programlama (Server Side) » ASP.NET » ASP.NET ve C# ile Image Resize


Yanıt
 
LinkBack Seçenekler
Old 17.01.2005   #1 (permalink)
neo_neuro
 
neo_neuro's Avatar
 
Üyelik Tarihi: 07.05.2003
Yer: Ankara
Yaş: 30
Mesaj: 437
ASP.NET ve C# ile Image Resize

Elimde yüksek çöüzünürlüklü 1000'e yakın fotoğraf var. Bu fotoğrafları veri tabanına yazmıyorum (fazlasıyla yer tutacağı için) ve bir dizine upload ediyorum. Ancak belli bölümlerde bu fotorafları thumbnail olarak veya boyutlarından %50 daha küçük yada %30 daha küçük kullanmam gerekecek. Her biri için tek tek uğraşamayacağım için şunu yapmak istiyorum. C# ile dizindeki belirli resmi alarak bunun yükseklik ve genişliğini bulup, resmi deforme etmeden belirli bir oranda küçültmem gerekiyor. Bu iş görüntü işleme kısmına girdiği için konuyla ilgili bir tecrübem olmadı. Konuyla ilgili kaynak veya çözüm önerileriniz ilgiyle okunur
neo_neuro şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 17.01.2005   #2 (permalink)
absconder
 
absconder's Avatar
 
Üyelik Tarihi: 09.12.2000
Yer: istanbul
Yaş: 30
Mesaj: 1,906
Re: ASP.NET ve C# ile Image Resize

basit bir örnek vereyim, geliştirmenize yardımıcı olur...

sample.HTML
Kod:
Orjinal : http://www.Google.com/images/logo.gif<br>
<img src="http://www.Google.com/images/logo.gif"><br><br>
138 X 55 <br>
<img src="http://localhost/resize.aspx?W=138&H=55">
resize.aspx
Kod:
<%@ Page Language="C#"%>
<%
	int yeniW = Convert.ToInt32(Request["W"].ToString());
	int yeniH = Convert.ToInt32(Request["H"].ToString());
	Response.ContentType="image/gif";
	string URI = "http://www.Google.com/images/logo.gif";
	System.Drawing.Bitmap DestImage = new System.Drawing.Bitmap(276, 110, System.Drawing.Imaging.PixelFormat.Format24bppRgb)  ;			
	System.Drawing.Graphics.FromImage(DestImage).DrawI  mage(	System.Drawing.image.FromStream(new System.Net.WebClient().OpenRead(URI)), new System.Drawing.Rectangle(0,0,276,110), new System.Drawing.Rectangle(0,0,276,110), 		System.Drawing.GraphicsUnit.Pixel);
	System.Drawing.Bitmap imgOutput = new System.Drawing.Bitmap(DestImage, yeniW, yeniH);
	imgOutput.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif);
	imgOutput.Dispose();
%>
__________________
"oturduğum mahallenin yolları çamurluydu, boyalı ayakkabı giysem bile, o yollardan geçtikten sonra çamurlanmamaları mümkün değildi. hayatım da böyle." yılmaz güney
http://www.sipidik.com
absconder şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 17.01.2005   #3 (permalink)
neo_neuro
 
neo_neuro's Avatar
 
Üyelik Tarihi: 07.05.2003
Yer: Ankara
Yaş: 30
Mesaj: 437
Re: ASP.NET ve C# ile Image Resize

Nefes almak istiyoruum.. Araya başka bir iki iş girdi absconder.. Derli toplu bişeyler yapıp buraya göndereceğim ilk fırsatta teşekkürler kodlar için..
neo_neuro şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 27.08.2007   #4 (permalink)
Dd_LynCh
 
Dd_LynCh's Avatar
 
Üyelik Tarihi: 01.11.2000
Yer: İstanbul - Ortaköy
Yaş: 25
Mesaj: 1,094
Re: ASP.NET ve C# ile Image Resize

@absconder: Hocam senin bu kodları kullanarak kendi sunucumdaki bir resmi boyutlandırıyorum. Yalnız daha sonra bu resim dosyasını silmeye kalkınca "The process cannot access the file because it is being used by another process." şeklinde hata veriyor. Bu sorunu nasıl aşarız, bir fikrin var mı acaba?
Dd_LynCh şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 27.08.2007   #5 (permalink)
absconder
 
absconder's Avatar
 
Üyelik Tarihi: 09.12.2000
Yer: istanbul
Yaş: 30
Mesaj: 1,906
Re: ASP.NET ve C# ile Image Resize

kullandığınız kodu yazabilirseniz, daha fazla yardımcı olabilirim.
__________________
"oturduğum mahallenin yolları çamurluydu, boyalı ayakkabı giysem bile, o yollardan geçtikten sonra çamurlanmamaları mümkün değildi. hayatım da böyle." yılmaz güney
http://www.sipidik.com
absconder şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 27.08.2007   #6 (permalink)
Dd_LynCh
 
Dd_LynCh's Avatar
 
Üyelik Tarihi: 01.11.2000
Yer: İstanbul - Ortaköy
Yaş: 25
Mesaj: 1,094
Re: ASP.NET ve C# ile Image Resize

Bu kodlar resmi istediğim boyutta çağırmak için kullandığım kodlar. (Senin kodların modifiye edilmiş hali)

Kod:
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Drawing"%>

<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);
        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.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(new System.Net.WebClient().OpenRead(URI)), new System.Drawing.Rectangle(0, 0, uploadedimage.Width, uploadedimage.Height), new System.Drawing.Rectangle(0, 0, uploadedimage.Width, uploadedimage.Height), System.Drawing.GraphicsUnit.Pixel);
        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();
    }
</script>
Bu kodları kullanarak bir resmi çağırırsam eğer alttaki kodları kullanarak aynı dosyayı silemiyorum. Aslında dosya kullanılmakta olduğu için klasöre girip kendi elimle de silemiyorum.


Kod:
<%@ Page Language="C#" %>
<%@ Import Namespace="System.IO"%>

<script runat="server">
    void Page_Load(){
        string adres = Convert.ToString(Request.QueryString["adres"]); 

        File.Delete(server.MapPath("images/resim/"+adres));
        Response.Redirect("anasayfa.aspx");
    }
</script>
Dd_LynCh şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 27.08.2007   #7 (permalink)
kuduk
 
Üyelik Tarihi: 28.04.2007
Yer: Ankara
Mesaj: 273
Re: ASP.NET ve C# ile Image Resize

dosyayi silmeden once o dosyayi kullanarak yarattigin objeleri null a esleyip dispose ile ortadan kaldirabilirsin, bu islemden sonra dosyayi silebilrsin

ve sorun hala devam ediyor ise bitmap class i ile ilgili bir bug;

kullanimi ikinci bir bitmap tan yaparsan silebilirsin,

Kod:
Bitmap cpy = new Bitmap(bmp);

Mesaj kuduk tarafından 27.08.2007 (18:23) yeniden düzenlendi.. Açıklama: duzeltme
kuduk şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 28.08.2007   #8 (permalink)
Dd_LynCh
 
Dd_LynCh's Avatar
 
Üyelik Tarihi: 01.11.2000
Yer: İstanbul - Ortaköy
Yaş: 25
Mesaj: 1,094
Re: ASP.NET ve C# ile Image Resize

Bu kopyalama işini nasıl yaparım diye araştırdım ama bulamadım. Daha doğrusu bazı şeyler buldum ama ya bulduklarım işe yaramadı ya da işe yaradı ama örneğin; kopyayı oluşturdum ama daha sonra kopyayı silemedim. Ben de en sonunda dosyayı silmekten vazgeçtim. Dosyalar server'da birikiyor, admin sayfasına "kullanılmayan dosyaları sil" diye bir temizlik düğmesi koydum ama pek şık olmadı tabii.
Dd_LynCh şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 28.08.2007   #9 (permalink)
absconder
 
absconder's Avatar
 
Üyelik Tarihi: 09.12.2000
Yer: istanbul
Yaş: 30
Mesaj: 1,906
Re: ASP.NET ve C# ile Image Resize

using ifadesi ile nesnenin kapsamını belirleyerek, kapsam sona erdikten sonra dispose edileceğini garanti edebilirsiniz.

Kod:
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Drawing"%>

<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(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);
            }
            using (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);
                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();
            }
        }
    }
</script>
__________________
"oturduğum mahallenin yolları çamurluydu, boyalı ayakkabı giysem bile, o yollardan geçtikten sonra çamurlanmamaları mümkün değildi. hayatım da böyle." yılmaz güney
http://www.sipidik.com
absconder şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 28.08.2007   #10 (permalink)
Dd_LynCh
 
Dd_LynCh's Avatar
 
Üyelik Tarihi: 01.11.2000
Yer: İstanbul - Ortaköy
Yaş: 25
Mesaj: 1,094
Re: ASP.NET ve C# ile Image Resize

"Parameter is not valid" şeklinde hata verdi bu halde.
Dd_LynCh şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Yanıt

Etiketler
resize , image , aspnet



 
Zoque'a hoşgeldiniz!
Zoque 27.02.1999 tarihinde yayın hayatına başlamış, paylaşıma dayalı bir oluşumdur. Tasarım, teknoloji, web, kültür ve sanat ana başlıkları altında bilgi paylaşımı ve benzer değerlere sahip katılımcıların birbirleriyle iletişime girmelerine imkan sağlar. "Az ama Öz" sloganından yola çıkarak, kaliteli ve nitelikli katılımı temel alır.

Saygın ve ciddi bir ortamda yardımlaşmak, haberleşmek, kendi bildiklerini diğer katılımcılarla paylaşmak isteyen, oluşumumuza düzenli katılımda bulunacağı inancını taşıyan konuklarımızı üye olmaya davet ediyoruz. [ » ]


Üye Girişi:

UslanmaM baktabul.com TEKplatform TEKplatform

En popüler ilk 100 etiket
Tag Cloud
acil adsl ajax almak arama araniyor ariyorum ariyoruz asp bilen bilgi bilgisayar blog calisma canon css dijital div domain dosya eleman film firefox flash font form forum fotograf freelance google gore grafik grafiker hakkinda hangi hata hatasi hosting html ilgili ilk image internet istanbul istiyorum java javascript karakter kayit kisisel kullanimi link logo mac mail menu muzik mysql nasil neden nedir online photoshop php problemi program programi reklam resim satilik sayfa script server ses sistemi site sitesi son soru sorun sorunsali sorunu sql swf