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>
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.
Umarım birilerinin işine yarar.PHP Kodu:using System;
using System.Drawing;
using System.Drawing.Imaging;
public partial class test : System.web.UI.Page
{
protected void Page_Load(object sender, EventArgs 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_genislik, olacak_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_resim, olacak_genislik, olacak_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.OutputStream, EnkoderBul(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.OutputStream, ImageFormat.Gif);
}
}
Aza sormuşlar nereye gidiyorsun diye. Çoğun yanına demiş. :confused: