Müdavim Girişi

E-Posta
Parola

Ücretsiz Kayıt Ol


Online Müdavimler (0 Kişi)
  • Online Kişi Bulunmadı

Yazar Hakkında
x
İsmail Kocacan
İsmail Kocacan is experienced on many development platforms and continues to learn technologies. Since the age of 16-17, dealing with software technologies. And continuous learning, teaching, research, continues to develop.
Resim Kalitesi Bozulmadan Boyutlandırma
Merhaba Arkadaslar;
Bu makalade sizlere Resim kalitesi bozulmadan nasil boyutlandirabilecegimizi göstericem.
Aslinda arama motorlarinda biraz turlarsaniz.Bu konuda yazilmis pek çok örnek bulabilirsiniz.Ama istedigim sonuç yok.yada ben bulamadim.Her neyse…
 
Bir resmin piksel sayisi büyük oldugunda boyutuda büyük oluyor.Resmi orjinal haliyle sayfaya koymaya kalktigimizda hem sayfanin düzenini bozuyor hemde boyutu büyük oldugundan geç yükleniyor,ve yine ayni zamanda hostinglerdeki alanimizdan da yer yiyor. Dert üstüne dert anliycaniz
 
Aslinda kalitesini bozulmasini önleyen komut Bitmap nesnesine ait SetPixel methodu.
Bu method System.Drawing.Image nesnesinde yok.
 
Daha kullanisli olmasi için resimlerin boyut degerlerini konfigürasyon dosyasina yazip ordan okudum.Bunun bize sagladigi fayda da su olacak;
Örnegin ilk olarak 100X105 olarak belirttigimiz bir resmin boyutunu daha sonra mesela 120X130 yapmak istedigimizde hiçbir sekilde kodlari derlememize gerek kalmayacak.Istedigimiz degisiklikleri konfigürasyonda yapmamiz yeterli olacak.
Web.Config
 <appSettings>
    <!-- Büyük Fotografin Boyutlari-->
    <addkey="buyukFotografUzunluk"value="800"/>
    <addkey="buyukFotografYukselik"value="550"/>
 
    <!-- Küçük Fotografin Boyutlari-->
    <addkey="kucukFotografUzunluk"value="100"/>
    <addkey="kucukFotografYukselik"value="105"/>
 </appSettings>

<
system.web>
    <httpRuntimemaxRequestLength="100000"executionTimeout="3600"enable="true"/>
</
system.web>
 
Default.aspx.cs
namespace ResimBoyutlandirma
{
    using System;
    using System.Configuration;
    using System.Web.UI;
    using System.Drawing;
    public partial class Default : System.Web.UI.Page
    {
        protected void btnYukle_Click(object sender, EventArgs e)
        {
            //Dosya Seçilmisse
            if (FileUpload1.HasFile)
            {
                //Konfigürasyondan okuyoruz
                int kfu = int.Parse(ConfigurationManager.AppSettings["kucukFotografUzunluk"].ToString());
                int kfy = int.Parse(ConfigurationManager.AppSettings["kucukFotografYukselik"].ToString());
 
                int bfu = int.Parse(ConfigurationManager.AppSettings["buyukFotografUzunluk"].ToString());
                int bfy = int.Parse(ConfigurationManager.AppSettings["buyukFotografYukselik"].ToString());
 
                //FileUpload nesnesinin içerigin stream olarak aliyoruz
                Bitmap bmp = new Bitmap(FileUpload1.FileContent);
                //Resmi pixsel olarak yeniden boyutlandir
                bmp.SetPixel(kfu, kfy, System.Drawing.Color.Black);
                Bitmap kucukResim = (Bitmap)bmp.GetThumbnailImage(kfu, kfy, null, IntPtr.Zero);
                Bitmap buyukResim = (Bitmap)bmp.GetThumbnailImage(bfu, bfy, null, IntPtr.Zero);
                kucukResim.Save(Server.MapPath("fotograflar/kucukler/" + Guid.NewGuid().ToString() + ".jpg"));
                buyukResim.Save(Server.MapPath("fotograflar/buyukler/" + Guid.NewGuid().ToString() + ".jpg"));
                bmp.Dispose();
            }
            else
            {
                ScriptManager.
                RegisterStartupScript(this, typeof(Page), "x", "Dosya Seçiniz", true);
            }
        }
    }
}

Default.aspx.Vb
Imports System.Drawing
Partial Public Class _Default
    Inherits System.Web.UI.Page
 
    Protected Sub btnYukle_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnYukle.Click
 
        If (FileUpload1.HasFile) Then
            'Konfigürasyondan okuyoruz
            Dim kfu As Integer = Int32.Parse(ConfigurationManager.AppSettings("kucukFotografUzunluk").ToString())
            Dim kfy As Integer = Int32.Parse(ConfigurationManager.AppSettings("kucukFotografYukselik").ToString())
 
            Dim bfu As Integer = Int32.Parse(ConfigurationManager.AppSettings("buyukFotografUzunluk").ToString())
            Dim bfy As Integer = Int32.Parse(ConfigurationManager.AppSettings("buyukFotografYukselik").ToString())
 
            'FileUpload nesnesinin içerigin stream olarak aliyoruz
            Dim bmp As Bitmap = New Bitmap(FileUpload1.FileContent)
            'Resmi pixsel olarak yeniden boyutlandir
            bmp.SetPixel(kfu, kfy, System.Drawing.Color.Black)
            Dim kucukResim As Bitmap = CType(bmp.GetThumbnailImage(kfu, kfy, Nothing, IntPtr.Zero), Bitmap)
            Dim buyukResim As Bitmap = CType(bmp.GetThumbnailImage(bfu, bfy, Nothing, IntPtr.Zero), Bitmap)
            kucukResim.Save(Server.MapPath("fotograflar/kucukler/" + Guid.NewGuid().ToString() + ".jpg"))
            buyukResim.Save(Server.MapPath("fotograflar/buyukler/" + Guid.NewGuid().ToString() + ".jpg"))
            bmp.Dispose()
        Else
            ScriptManager.RegisterStartupScript(Me, Me.GetType(), "x", "Dosya Seçiniz", True)
        End If
    End Sub
End Class
 
 
Uygulamaya ait Kaynak Kodlari Buradan indirebilirsiniz
Umarim Faydali Olmustur.
 
Ismail Kocacan(Yazilimci Bozuntusu)

 


Kategori : C#.Net & Vb.Net | 06.04.2011 18:28:00  | 698 defa okundu  | 0 Yorum |

Yazara Ait Diğer Makaleler(51) Makaleye Yapılan Yorumlar İlk yorum yazan siz olun
Ara
 
Anket
Hangi VeriTabanı Yönetim Sistemini Kullanıyorsunuz ?