using System;
using System.IO;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
public class GetImage : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
string strWidth = this.Request["width"];
string strHeight = this.Request["height"];
int width = -1, height = -1;
try
{
width = Convert.ToInt32(strWidth);
height = Convert.ToInt32(strHeight);
}
catch{}
Response.ContentType = "image/JPEG";
FileStream fs = new FileStream(@"c:/file1.jpg", FileMode.Open, FileAccess.Read);
GetZoomedLogo(fs, width, height, this.Response);
Response.End();
}
private void GetZoomedLogo(System.IO.Stream originLogo, int width, int height,System.IO.Stream outputStream)
{
int drawWidth = 0, drawHeight = 0;
System.Drawing.Image origin = System.Drawing.Image.FromStream(originLogo);
if (width == 0 && height == 0) //not designate width and height
{
width = origin.Width;
height = origin.Height;
}
if (origin.Width < width && origin.Height < height) //not zoom in
{
drawWidth = origin.Width;
drawHeight = origin.Height;
}
else
{
double scaleX = (double)origin.Width / (double)width;
double scaleY = (double)origin.Height / (double) height;
double scale = scaleX > scaleY ? scaleX : scaleY;
drawWidth = Convert.ToInt32(origin.Width / scale);
drawHeight = Convert.ToInt32(origin.Height / scale);
}
System.Drawing.Rectangle destRect = new Rectangle((width - drawWidth) / 2, (height - drawHeight) / 2, drawWidth, drawHeight);
Bitmap temp = new Bitmap(width, height);
Graphics g = Graphics.FromImage(temp);
SolidBrush brush = new SolidBrush(Color.White);
g.FillRectangle(brush, 0, 0, width, height); //draw background
// g.DrawLine(new Pen(Color.Red, 10), 0, 0, 20, 20);
if (width >= 300 || height >= 300)
{
g.DrawImage(origin, destRect);
}
else
{
System.Drawing.Image thumbnail = origin.GetThumbnailImage(drawWidth, drawHeight, null, System.IntPtr.Zero);
g.DrawImage(thumbnail, destRect);
}
temp.Save(outputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
origin.Dispose();
temp.Dispose();
g.Dispose();
}
}
此博客展示了一段C#代码,用于获取图片并进行缩放处理。代码通过接收请求中的宽高参数,对图片进行缩放,若未指定宽高则使用原图尺寸,最后将处理后的图片以JPEG格式输出。
1216

被折叠的 条评论
为什么被折叠?



