Öncelikle 1. resmin gösterileceği sayfa
2. hafıza işleminin yapılacağı sayfa
Şimdi 1. sayfa örn: "görüntüle.aspx" içerisimde de bir adet img nesnesi var:
<img src="resimboyutla.aspx?dosyaadi=1.jpg" />
yukarıda fark ettiğiniz gibi img nesnesinin kaynağını bir resim değil aspx sayfası olarak gösterdim ve resmin adını gönderdim. Şimdi ikinci aşama resimboyutla.aspx içini tasarlayalım.
public partial class resimboyutla : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string path = Server.MapPath("~/images/" + Request.QueryString["dosyaadi"]);
Image original = Image.FromFile(path);
Image resized = ResizeImage(original, new Size(100, 100));
MemoryStream memStream = new MemoryStream();
resized.Save(memStream, ImageFormat.Jpeg);
Byte[] bytes = new Byte[memStream.Length];
memStream.Position = 0;
memStream.Read(bytes, 0, (int)bytes.Length);
Response.ContentType = "image/JPEG";
Response.BinaryWrite(bytes);
original.Dispose();
resized.Dispose();
Response.End();
}
public static Image ResizeImage(Image image, Size size, bool preserveAspectRatio = true)
{
int newWidth;
int newHeight;
int ofsetx = 0;
int ofsety = 0;
if (preserveAspectRatio)
{
int originalWidth = image.Width;
int originalHeight = image.Height;
float percentWidth = (float)size.Width / (float)originalWidth;
float percentHeight = (float)size.Height / (float)originalHeight;
float percent = percentHeight < percentWidth ? percentHeight : percentWidth;
newWidth = (int)(originalWidth * percent);
newHeight = (int)(originalHeight * percent);
if (newWidth > newHeight)
{
ofsetx = 0;
ofsety = (size.Height - newHeight) / 2;
}
else
{
ofsetx = (size.Width - newWidth) / 2;
ofsety = 0;
}
}
else
{
newWidth = size.Width;
newHeight = size.Height;
}
Image newImage = new Bitmap(size.Width, size.Height);
using (Graphics graphicsHandle = Graphics.FromImage(newImage))
{
graphicsHandle.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphicsHandle.FillRectangle(new SolidBrush(Color.White), 0, 0, size.Width, size.Height);
graphicsHandle.DrawImage(image, ofsetx, ofsety, newWidth, newHeight);
}
return newImage;
}
}