再次改進gif動畫水印和縮略-節日版
連續發表了幾篇有關gif動畫處理的文章,地址如下:
給gif動畫添加水印的初步實現
改善了性能的gif動畫添加水印
為gif動畫添加水印-有具體實現[2008-02-15日更新]
生成Gif動畫縮略圖-Gif動畫水印的改進
再發Gif動畫水印
前面雖然解決了很多問題,但同時也都留下了許多有待解決的難題,本文于200年3月7日修正了以往文章中的如下問題:
1)修正了2007年3月5日發布的再發Gif動畫水印中水印文字的顏色問題,在上個版本中,雖然也是根據調色板中的顏色來設置文字前景色的,可DrawString()之后,其實在對顏色編制索引的時候,顏色還是會有變化,這種變化會導致水印字的部分在調色板中找不到索引,所以字的顏色就很難得以控制,本文通過顏色近似比較,將水印后的圖片中顏色均量化到調色板可表示的顏色范圍之內,從此解決了水印字體顏色的問題。新的水印函數為:
/// <summary>
/// 對gif動畫添加水印
/// </summary>
/// <param name="gifFilePath">原gif動畫的路徑</param>
/// <param name="text">水印文字</param>
/// <param name="textForceColor">水印文字的顏色,因為gif不是真彩色圖片,所以在顯示的時候,該顏色可能有所誤差,但基本上可以確定顏色范圍</param>
/// <param name="font">字體</param>
/// <param name="x">水印位置橫坐標</param>
/// <param name="y">水印位置縱坐標</param>
/// <param name="outputPath">輸出路徑</param>
public void WaterMark(string gifFilePath, string text, Color textForceColor, Font font, float x, float y, string outputPath)
原圖:
水印后效果:
在生成Gif動畫縮略圖-Gif動畫水印的改進中一文中有對gif動畫進行縮略的一個實現,那個實現主要是用codeproject上提供的NGif來完成的,不過它基于的是將對現有圖片的顏色量化,非常容易出現背景變色,體積增大等問題,本文用一種新的思路取代了那種做法,我的想法是:我目前暫不針對給定幾張png圖片,讓我生成gif動畫這種的應用場景,我主要針對的是給我一張現在存在的gif動畫,我能夠對其水印,縮略。要實現這樣的目的,我的基本思路就是保持該動畫的調色板信息不變,編碼的時候,整體布局也保持基本不變,變得只是我的需求影響到的部分。一幅圖,如果經過縮略,它的有些像素是會發生改變的,這就使得很難再次利用調色板,我根據顏色抖動,將縮略中的顏色重新量化成調色板能表示,所以圖片實質上會發生一些失真。但基本上視覺沒有太大影響,可由此帶來的好處就大大超過了害處,經過縮略的gif動畫背景色不會更改,體積會成倍成倍的減小。縮略方法為:
/// <summary>
/// 獲取gif動畫的縮略圖
/// </summary>
/// <param name="gifFilePath">原gif圖片路徑</param>
/// <param name="rate">縮放大小</param>
/// <param name="outputPath">縮略圖大小</param>
public void GetThumbnail(string gifFilePath, double rate, string outputPath)
原圖:
縮略后效果:
原圖大小: 17.3KB ,縮略后大小:6.54KB
發現有些人將代碼拷貝過去之后,馬上將版權改成自己的名字,而且在網上肆意張貼,以后的版本不會直接提供文件下載,如果有需要朋友,只要是園子的注冊用戶,發郵件給我,我保準回復。這樣也許可以為園子增加一些注冊用戶吧,我的email:jillzhang@126.com,再次聲明,園子中兄弟有需要的,發郵件給我就可以了,由此帶來的不便,還請兄弟們能理解。郵件中最好注明博客園ID和網址
今天是老婆的雙重節日:生日和婦女節,祝愿老婆開開心心,越來越漂亮

一起的日子

同時祝園子中的女同胞節日快樂,:)
給gif動畫添加水印的初步實現
改善了性能的gif動畫添加水印
為gif動畫添加水印-有具體實現[2008-02-15日更新]
生成Gif動畫縮略圖-Gif動畫水印的改進
再發Gif動畫水印
前面雖然解決了很多問題,但同時也都留下了許多有待解決的難題,本文于200年3月7日修正了以往文章中的如下問題:
1)修正了2007年3月5日發布的再發Gif動畫水印中水印文字的顏色問題,在上個版本中,雖然也是根據調色板中的顏色來設置文字前景色的,可DrawString()之后,其實在對顏色編制索引的時候,顏色還是會有變化,這種變化會導致水印字的部分在調色板中找不到索引,所以字的顏色就很難得以控制,本文通過顏色近似比較,將水印后的圖片中顏色均量化到調色板可表示的顏色范圍之內,從此解決了水印字體顏色的問題。新的水印函數為:
/// <summary>
/// 對gif動畫添加水印
/// </summary>
/// <param name="gifFilePath">原gif動畫的路徑</param>
/// <param name="text">水印文字</param>
/// <param name="textForceColor">水印文字的顏色,因為gif不是真彩色圖片,所以在顯示的時候,該顏色可能有所誤差,但基本上可以確定顏色范圍</param>
/// <param name="font">字體</param>
/// <param name="x">水印位置橫坐標</param>
/// <param name="y">水印位置縱坐標</param>
/// <param name="outputPath">輸出路徑</param>
public void WaterMark(string gifFilePath, string text, Color textForceColor, Font font, float x, float y, string outputPath)
水印后效果:
在生成Gif動畫縮略圖-Gif動畫水印的改進中一文中有對gif動畫進行縮略的一個實現,那個實現主要是用codeproject上提供的NGif來完成的,不過它基于的是將對現有圖片的顏色量化,非常容易出現背景變色,體積增大等問題,本文用一種新的思路取代了那種做法,我的想法是:我目前暫不針對給定幾張png圖片,讓我生成gif動畫這種的應用場景,我主要針對的是給我一張現在存在的gif動畫,我能夠對其水印,縮略。要實現這樣的目的,我的基本思路就是保持該動畫的調色板信息不變,編碼的時候,整體布局也保持基本不變,變得只是我的需求影響到的部分。一幅圖,如果經過縮略,它的有些像素是會發生改變的,這就使得很難再次利用調色板,我根據顏色抖動,將縮略中的顏色重新量化成調色板能表示,所以圖片實質上會發生一些失真。但基本上視覺沒有太大影響,可由此帶來的好處就大大超過了害處,經過縮略的gif動畫背景色不會更改,體積會成倍成倍的減小。縮略方法為:
/// <summary>
/// 獲取gif動畫的縮略圖
/// </summary>
/// <param name="gifFilePath">原gif圖片路徑</param>
/// <param name="rate">縮放大小</param>
/// <param name="outputPath">縮略圖大小</param>
public void GetThumbnail(string gifFilePath, double rate, string outputPath)原圖:
縮略后效果:原圖大小: 17.3KB ,縮略后大小:6.54KB
發現有些人將代碼拷貝過去之后,馬上將版權改成自己的名字,而且在網上肆意張貼,以后的版本不會直接提供文件下載,如果有需要朋友,只要是園子的注冊用戶,發郵件給我,我保準回復。這樣也許可以為園子增加一些注冊用戶吧,我的email:jillzhang@126.com,再次聲明,園子中兄弟有需要的,發郵件給我就可以了,由此帶來的不便,還請兄弟們能理解。郵件中最好注明博客園ID和網址
今天是老婆的雙重節日:生日和婦女節,祝愿老婆開開心心,越來越漂亮

一起的日子

同時祝園子中的女同胞節日快樂,:)
作者:jillzhang
出處:http://jillzhang.cnblogs.com/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
出處:http://jillzhang.cnblogs.com/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。

Gif處理庫
再次改進gif動畫水印和縮略-節日版

浙公網安備 33010602011771號