问题描述
网上的代码都差不多找出最常用的几句://原始图片都是jpeg格式ImageoriginalImage=Image.FromFile(...);//水印图片ImagewaterMarkImage=Image.FromFile(...);Graphicsg=Graphics.FromImage(originalImage);g.CompositingMode=System.Drawing.Drawing2D.CompositingMode.SourceOver;g.InterpolationMode=System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;//画水印g.DrawImage(waterMarkImage,...);originalImage.Save("新图片路径",ImageFormat.Jpeg);问题是这样:我用原始图片为8.6mb的图片加上水印保存之后只有1mb多一点怎么样才能加水印而不改变图片的其他属性(大小)呢?
解决方案
解决方案二:
该回复于2012-03-05 10:57:12被版主删除
解决方案三:
解决方案四:
懒的找了,你看这个吧。
解决方案五:
我博客usingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.WebControls.WebParts;usingSystem.Web.UI.HtmlControls;usingSystem.IO;usingSystem.Drawing;usingSystem.Drawing.Imaging;///<summary>///PictureHandler的摘要说明///</summary>publicclassPicHandler:IHttpHandler{publicvoidProcessRequest(HttpContextcontext){context.Response.ContentType="text/plain";stringimgUrl=context.Request.PhysicalPath;//得到当前处理图片的物理路径if(File.Exists(imgUrl)){Imageimg=Image.FromFile(imgUrl);//通过图片路径得到图片对象Imagewatering=Image.FromFile(context.Server.MapPath("~/themes/images/water.jpg"));//得到数字水印图片Graphicsg=Graphics.FromImage(img);//通过图片对象创建画布g.DrawImage(watering,newRectangle(img.Width-watering.Width,img.Height-watering.Height,watering.Width,watering.Height),0,0,watering.Width,watering.Height,GraphicsUnit.Pixel);//画图context.Response.ContentType="image/jpeg";//设置图片的格式img.Save(context.Response.OutputStream,ImageFormat.Jpeg);//把图片保存在输出流中g.Dispose();//销毁画布img.Dispose();//销毁图片context.Response.End();}else{Imagedefaultimg=Image.FromFile(context.Server.MapPath("~/themes/images/water.jpg"));//通过图片路径得到默认图片对象Imagewatering=Image.FromFile(context.Server.MapPath("~/themes/images/water.jpg"));//得到数字水印图片Graphicsg=Graphics.FromImage(defaultimg);//通过图片对象创建画布g.DrawImage(watering,newRectangle(defaultimg.Width-watering.Width,defaultimg.Height-watering.Height,watering.Width,watering.Height),0,0,watering.Width,watering.Height,GraphicsUnit.Pixel);//画图context.Response.ContentType="image/jpeg";//设置图片的格式defaultimg.Save(context.Response.OutputStream,ImageFormat.Jpeg);g.Dispose();defaultimg.Dispose();context.Response.End();}}publicboolIsReusable{get{returnfalse;}}}
解决方案六:
你代码中指定了Jpeg格式,并用了默认的图像品质:originalImage.Save("新图片路径",ImageFormat.Jpeg);1、试试保留原照片的格式xxx,比如:originalImage.Save("新图片路径.xxx");2、或调高图像品质的JPEG压缩(一般不需要,除非有高图像品质要求)。