Ste*_*ven 4 c# asp.net gdi+ image bitmap
因此,在我的网站上,用户可以创建头像.它是由用户从多个图像中选择而创建的; 有一个基本的"皮肤"图像,png与图像重叠,描绘了头发,眼睛,嘴巴等.
我无法将用户的头像保存到项目的文件中,因此用户的头像数据存储在数据库中,并且png在运行中重叠并显示给用户.
但是,我希望用户能够通过访问页面将他们的头像下载为jpeg.
我有一个正常工作的小例子设置:
protected void Page_Load(object sender, EventArgs e) { //User has skin1.png, eyes3.png, and mouth8.png Bitmap bit = new Bitmap(System.Drawing.Image.FromFile(Server.MapPath("/images/skin1.png")), 80, 106); Response.ContentType = "image/jpeg"; bit.Save(Response.OutputStream, ImageFormat.Jpeg); }
但是,正如您所看到的,我只能将其用于单个图像.我想从多个png创建一个位图并输出一个jpeg.
有人可以帮忙吗?
您可以将图像绘制在彼此之上.PNG图像的透明度处理正确,但由于JPEG图像没有任何透明度,您需要绘制背景颜色.
请务必小心处理图形和位图对象.它们甚至不建议用于Web应用程序......
// create image to draw on
using (Bitmap bit = new Bitmap(80, 106)) {
// fill with background
bit.Clear(Color.White);
// images to load
string[] skins = new string[] { "skin1.png", "eyes3.png", "mouth8.png" };
// create graphics object for drawing on the bitmap
using (Graphics g = Graphics.FromImage(bit)) {
foreach (string skin in skins) {
// load image
using (Image skinImage = Image.FromFile(Server.MapPath("/images/" + skin)) {
// draw image
g.DrawImage(skinImage, 0, 0, 80, 106);
}
}
}
Response.ContentType = "image/jpeg";
bit.Save(Response.OutputStream, ImageFormat.Jpeg);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1360 次 |
最近记录: |