C#给背景色透明的GIF动画加水印文字后背景色不能保持透明了??
如题,我已经实现了给GIF动画加水印文字的功能,但是如果对背景色透明的GIF动画进行操作,得到的GIF动画就有了难看的背景色,请问有什么解决的办法使处理前后的图片保持一致么,仅仅就是多了我的水印文字?请热心人能解答得针对性强一些,不要一来就贴一大堆没说明的代码,谢谢各位!! --------------------编程问答-------------------- 参考
http://blog.csdn.net/zgke/archive/2008/11/28/3401077.aspx
你保存GIF的时候需要自己设置为透明 --------------------编程问答-------------------- 参考 --------------------编程问答-------------------- 补充一个问题:
我能不能不把加水印后的GIF动画保存到硬盘,而是直接输出流到aspx文件呢?
比如说:bitPhoto.Save(Response.OutputStream, ImageFormat.Gif);
不知道该怎么操作,因为我不知道处理后的GIF动画还有没有bitmap 或者image 可以这样输出 --------------------编程问答-------------------- bitPhoto.Save(Response.OutputStream, ImageFormat.Gif);
这样是可以的.. --------------------编程问答--------------------
那你知道怎么对GIF动画添加水印么,能不能给点代码我参考一下,我是网上找的别人的代码,但是写得好复杂,只知道用,好多东西看不懂,再就是GIF处理后的保存,似乎只能保存到硬盘再读出为流,能不能直接到内存中处理,不保存到硬盘呢? --------------------编程问答-------------------- --------------------编程问答-------------------- 怎么不在了 --------------------编程问答-------------------- 如果是动画的GIF 你需要修改保存的方法了. 如果只是透明处理直接使用Image就可以做到的 --------------------编程问答--------------------
你有没有好的保存方法,介绍一下,或者来点代码,谢谢了! --------------------编程问答--------------------
看一下对比图吧,不知道哪里不对,我是用你的方法直接转换保存的
ToImageGif(img).Save(Server.MapPath("img/test.gif")); --------------------编程问答-------------------- 原图本来就是背景色透明的,用你的方法一转换保存 就成这个粉红色背景的了,不知道为什么 --------------------编程问答--------------------
Zgke.MyImage.ImageFile.ImageGif _Gif = new Zgke.MyImage.ImageFile.ImageGif(@"C:\hyzl.gif");
List<Image> _ImageList = new List<Image>();
for (int i = 0; i != _Gif.ImageCount; i++)
{
Image _SetImage = _Gif.GetImage(i);
Bitmap _NewBitmap = new Bitmap(_SetImage.Width, _SetImage.Height);
Graphics _Graphics = Graphics.FromImage(_NewBitmap);
_Graphics.DrawImage(_SetImage, 0, 0);
_Graphics.DrawString("A", this.Font, Brushes.Black, 0, 0);
_Graphics.Dispose();
_ImageList.Add(_NewBitmap);
}
for (int i = 0; i != _ImageList.Count; i++)
{
_Gif.RemoveImage(0);
}
for (int i = 0; i != _ImageList.Count; i++)
{
_Gif.AddImage(_ImageList[i], 15, false, Zgke.MyImage.ImageFile.ImageGif.DisposalMethod.RestoreBackgroundColor);
}
_Gif.SaveFile(@"C:\1.gif");
用到的类
http://blog.csdn.net/zgke/archive/2009/01/06/3721389.aspx
--------------------编程问答--------------------
可以把图片的质量控制一下么,处理后图片模糊了好多哦?? --------------------编程问答-------------------- ToImageGif 的方法里 把你取到的色彩表放到Image里.. --------------------编程问答-------------------- 手动设置下透明值吧 --------------------编程问答--------------------
Graphics.Clear(Color.Transparent);
是这样么,可是这样处理出来的图片是黑色一片啊? --------------------编程问答--------------------
我不是太懂你说的做法,刚刚接触这个。
还有就是,我发现如果用你的方法处理背景不透明的GIF,得到的图像反而严重失真,丢失色彩,或者可以说第一帧以后的帧都看不清了,有什么办法可以判断要处理的GIF是否是背景透明的呢?从而选择不同的处理方法 --------------------编程问答-------------------- 再來几個高手吧 --------------------编程问答-------------------- 幫頂 --------------------编程问答-------------------- [img=http://www.coudoudou.com/showvipcount.aspx?id=55203][/img]
看看這個吧,似乎就是給動態GIF加數字水印后輸出的效果,可以做計數器
但我的處理效果不行 --------------------编程问答-------------------- 继续等待,帮顶有分 --------------------编程问答-------------------- 关注 --------------------编程问答-------------------- 饭前一顶 --------------------编程问答-------------------- gif类非常强大,学习了,但似乎在gif类里没有看见质量控制的语句,你参考一下吧:
Graphics picture = Graphics.FromImage(img);
picture.SmoothingMode = SmoothingMode.HighQuality;
picture.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
picture.CompositingQuality = CompositingQuality.HighQuality; --------------------编程问答-------------------- 学习了 这个是我自己做的 gif水印 logo在线生成 http://www.zlinkz.com/Tool_creatLogo.aspx
写在我的网站上了
友情链接交换
补充:.NET技术 , C#