ComicEnhancer vs. Photoshop
其實(shí)我個(gè)人認(rèn)為,Photoshop的漫畫增強(qiáng)效果還是不錯(cuò)的,但在分享轉(zhuǎn)換參數(shù)方面還存在一些不足,所以我才會(huì)編這個(gè)程序。
從總體上說,ComicEnhancer模仿的是Photoshop的Batch Action功能,但支持的圖像格式、圖像處理方法和效果、效率均比Photoshop差一點(diǎn),畢竟是在業(yè)余時(shí)間里 鼓搗出來的東西。
Batch Action看得見的參數(shù)不多,建立時(shí)一般是對(duì)圖像操作進(jìn)行錄制,因此如果在BBS上撒個(gè)帖子:“我用Photoshop進(jìn)行了××操作,增強(qiáng)了××漫畫”,別人大概也是有聽沒有用。而ComicEnhancer的所有參數(shù)均是可見的,結(jié)果也是可重復(fù)的,因此如果在BBS上撒個(gè)帖子:“我用ComicEnhancer增強(qiáng)了××漫畫,所用參數(shù)為××”,大家都可以受益。
Photoshop里我最欣賞的就是Curve功能,通過用樣條函數(shù)表示的非線性映射,能夠同時(shí)調(diào)整圖像的亮度和對(duì)比度。但是這個(gè)功能的可重復(fù)性實(shí)在是太小。ComicEnhancer的所有操作都是可重復(fù)的。
最要命的一點(diǎn),Photoshop實(shí)在是太大、太全了,會(huì)用它處理漫畫的人好象不太多,而且自從開始收集電子版漫畫后,我對(duì)Photoshop在硬盤上所占據(jù)的100多兆空間一直耿耿于懷。
在參數(shù)確定后,選擇“文件->成批轉(zhuǎn)換”菜單,即可調(diào)出原ComicEnhancer界面,對(duì)成批圖像文件進(jìn)行處理:
在“需增強(qiáng)的漫畫”框中,點(diǎn)擊“選擇”按鈕,選擇源文件(需處理的漫畫文件)所在目錄,再?gòu)摹霸次募绷斜碇羞x擇源文件類型。點(diǎn)擊“查看文件”按鈕可以啟動(dòng)圖像瀏覽器并打開目錄下的第一個(gè)源文件。如果“包括子目錄”選項(xiàng)被選中,處理時(shí)連源目錄所帶子目錄下的文件一起處理,否則只處理源目錄下的文件。
在“增強(qiáng)后的漫畫”框中,點(diǎn)擊“選擇”按鈕,選擇目標(biāo)文件(處理后生成的新文件)的存放目錄,再?gòu)摹靶挛募䲠U(kuò)展名”列表中選擇目標(biāo)文件類型。點(diǎn)擊“查看文件”按鈕可以啟動(dòng)圖像瀏覽器并打開目錄下的第一個(gè)目標(biāo)文件。源文件和目標(biāo)文件如果是同一個(gè)目錄,處理前會(huì)提示用戶是否要覆蓋源文件。
如有必要,調(diào)節(jié)“選項(xiàng)”框中的各個(gè)選項(xiàng)(含義見后)。
如有必要,可以點(diǎn)“選擇轉(zhuǎn)換”按鈕,先選擇幾個(gè)源文件轉(zhuǎn)換一下,看一下實(shí)際轉(zhuǎn)換后的效果。
所有參數(shù)配置好后,點(diǎn)擊右上方的“全部轉(zhuǎn)換”按鈕開始圖像處理。處理過程中底部的進(jìn)度條會(huì)顯示當(dāng)前處理進(jìn)度,處理完后彈出對(duì)話框顯示需處理的文件數(shù)、成功處理的文件數(shù)。如果有文件不能成功處理(不能讀或不能寫),會(huì)提示用戶打開處理過程的記錄文件,從中可以知道具體哪些文件不能讀或?qū)。不能讀的原因可能是源文件損壞,或不是標(biāo)準(zhǔn)的文件格式,可以用ACDSee轉(zhuǎn)換一下再重試。不能寫的原因可能是因?yàn)槟繕?biāo)目錄不允許寫,或磁盤空間不夠。
在點(diǎn)擊“全部轉(zhuǎn)換”按鈕開始處理后,“全部轉(zhuǎn)換”按鈕變成“停止轉(zhuǎn)換”按鈕,其它控件變灰。用戶點(diǎn)擊“停止轉(zhuǎn)換”按鈕可以中斷正在進(jìn)行的處理。
如果對(duì)調(diào)整效果比較滿意,點(diǎn)擊“保存”按鈕可以將參數(shù)存盤。點(diǎn)擊“調(diào)入”按鈕可以調(diào)入以前存盤的參數(shù)。點(diǎn)擊“恢復(fù)”按鈕則將參數(shù)設(shè)置為默認(rèn)值。如果需要?jiǎng)h除某次保存的參數(shù)值,點(diǎn)擊“調(diào)入”按鈕,在打開“參數(shù)管理”對(duì)話框后,選擇欲刪除的設(shè)置,點(diǎn)“刪除”按鈕。
提示:
源文件目錄最好和目標(biāo)文件目錄不一樣,避免覆蓋,并且可以反復(fù)運(yùn)行。
由于各選項(xiàng)參數(shù)的設(shè)置與具體圖像質(zhì)量有關(guān),因此如果一次需要處理的圖像很多,最好先從中選擇幾張進(jìn)行試調(diào)節(jié),參數(shù)調(diào)試好后再對(duì)所有文件進(jìn)行最終調(diào)節(jié),以節(jié)省運(yùn)行時(shí)間。
從1.24版開始,原來的“轉(zhuǎn)換”按鈕更改為“全部轉(zhuǎn)換”,即對(duì)源目錄下的所有文件進(jìn)行轉(zhuǎn)換,適用于參數(shù)已確定的情況;新增“選擇轉(zhuǎn)換”按鈕,允許對(duì)選定的(多個(gè))文件進(jìn)行轉(zhuǎn)換,適用于參數(shù)嘗試、調(diào)整階段。
參數(shù)調(diào)節(jié)步驟:
如果彩色頁面明顯發(fā)白,或因?yàn)榧垙堦惻f而發(fā)黃,可以試著選擇自動(dòng)色階或自動(dòng)對(duì)比度。
在無偏色的情況下,首選是曲線功能,此功能大致相當(dāng)于Photoshop的Curve功能,但是內(nèi)置了幾種調(diào)節(jié)模式。一般先根據(jù)圖像情況選擇其中的某種模式,再對(duì)調(diào)節(jié)點(diǎn)進(jìn)行調(diào)節(jié)。
如果對(duì)曲線功能調(diào)節(jié)效果不滿意,則選擇“原畫面保持不變”模式,改用其它調(diào)節(jié)方式。一般畫面背景透光嚴(yán)重時(shí),可以增加畫面對(duì)比度和亮度。但是增加亮度會(huì)造成畫面整體發(fā)白,這時(shí)可以將亮度恢復(fù)成100%,改為調(diào)節(jié)高亮度。
如果增加高亮度后對(duì)文字、邊線造成損傷,則增加高亮值,減小亮度。
如果增加高亮值后在背景上出現(xiàn)較多麻點(diǎn),減小高亮值,增加亮度。
如果調(diào)節(jié)后圖像整體發(fā)白,或文字、邊線較模糊、黯淡,增加Gamma校正值。
如果畫面模糊,可以選擇銳化選項(xiàng)。如果圖像邊線、文字比較單薄,有間斷,或圖像放大后鋸齒比較嚴(yán)重,可選擇柔化操作。不過這兩項(xiàng)操作比較費(fèi)時(shí)間,如果機(jī)器不好的話會(huì)感覺速度明顯變慢。
如有必要,調(diào)節(jié)圖像縮放比例。注意如果選擇放大圖像,則每一步操作均需要更多的時(shí)間。如果機(jī)器夠快,建議選擇bicubic,嫌太慢可以選bilinear,只有在不得已的情況下才選擇nearest。
如果看的是黑白漫畫,最好將色彩選項(xiàng)置為“黑白漫畫”,而不是缺省的“保持原樣”,這樣可以減輕紙張發(fā)黃、發(fā)紅等造成的背景雜亂。
如果希望生成的JPG文件更小一點(diǎn),可以減小JPG壓縮比。
對(duì)于黑白漫畫,色彩選項(xiàng)選為“黑白漫畫”可以使生成的文件小一些;如果畫面非常干凈,也可以選擇“16級(jí)灰度”、“8級(jí)灰度”或“4級(jí)灰度”,并選擇按PNG格式輸出,可以獲取最佳壓縮比。對(duì)于純文字頁面,選“單色”,并選擇按TIFF格式輸出,可以獲取最佳壓縮比。如果需要處理的漫畫中包含彩色封面,可以勾選“不處理彩色圖像文件”選項(xiàng),以避免損失。
如果瀏覽的是純文字頁面(掃描電子書),并且筆畫較細(xì)影響閱讀,可以選擇“加粗”選項(xiàng)進(jìn)行加粗。
各Option項(xiàng)的含義:
1. 亮度
范圍0~200,100表示亮度不變,小于100圖像變暗,大于100圖像變亮。增加亮度一般可以消除斑點(diǎn)、背透、紙張顏色、印刷時(shí)油墨不勻造成的黑印,但是較淡的文字、邊線可能會(huì)更看不清。
2. 對(duì)比度
范圍0~200,100表示圖像不變,小于100圖像變灰,大于100圖像更加黑白分明,有助于解決因單純?cè)黾恿炼榷斐傻奈淖帧⑦吘變淡,因此常和增加亮度同用。
3. 高亮度
范圍0~200,100表示高亮區(qū)(圖像空白區(qū))亮度不變,小于100高亮區(qū)圖像變暗,大于100高亮區(qū)圖像變亮。這可是本軟件最獨(dú)特的地方,能夠在因源圖像文件中的文字、邊線較淡而很難再增加總體亮度的情況下,僅增加圖像空白區(qū)的亮度,從而能有效清除背景上的斑點(diǎn)、紙色、背透等等,在ACDSee 3.1的Photo Enhancer和Microsoft的“照片編輯器97”中可都找不到類似的功能。所謂“高亮區(qū)”,其實(shí)是由旁邊的“高亮值”定義的。在使用本功能去除背景上的紙色、背透時(shí),如果增加高亮值,可以保護(hù)較淡的文字、邊線,但是去除效果就會(huì)下降;如果減少高亮值,去除效果就會(huì)更明顯,但可能會(huì)誤傷教淡的文字、邊線。
4. 高亮值
定義高亮度區(qū)加亮功能的“高亮區(qū)”:當(dāng)象素的亮度值(0~255)大于等于該值時(shí),象素處于高良區(qū),執(zhí)行加亮操作,否則保持不變。一般來講,增加此值時(shí),可以保護(hù)較淡的文字、邊線,但是去除底紋效果就會(huì)下降;如果減少此值,去除效果就會(huì)更明顯,但可能會(huì)誤傷較淡的文字、邊線。
5. 曲線
大致相當(dāng)于Photoshop的Curve功能,專業(yè)術(shù)語稱“對(duì)比度延展”。此功能可以綜合調(diào)節(jié)畫面對(duì)比度和亮度,并且設(shè)置了幾種典型模式,應(yīng)該是首選的調(diào)節(jié)手段,宜勤加練習(xí)。
6. Gamma校正
范圍0~200,100表示圖像不變,小于100圖像變白,大于100圖像變黑,有助于解決因增加亮度、對(duì)比度、高亮度等而造成的畫面發(fā)白,并能使模糊、黯淡的文字、邊線變得更堅(jiān)實(shí),當(dāng)然如果圖面上有麻點(diǎn)也會(huì)變得更顯眼。
7. 尺寸縮放
范圍0~200,100表示圖像尺寸不變,小于100輸出圖像變小,但圖像可能會(huì)更清晰(致密);大于100輸出圖像變大,但可能會(huì)更模糊。放大的時(shí)候有三種選擇,如果機(jī)器夠快,建議選擇bicubic,嫌bicubic太慢可以選bilinear,只有在不得已的情況下才選擇nearest。
8. JPG壓縮比
范圍0~100,此值越低表示存盤后的JPG圖像質(zhì)量越差,但文件長(zhǎng)度更;此值越高表示存盤后的質(zhì)量越好,但文件長(zhǎng)度更大。
9. 切邊
如果“填白”選項(xiàng)沒有選中,則所選區(qū)域外的部分將被裁剪掉,否則用白色填充而不裁剪。
10. 銳化
對(duì)于墨色教濃、文字筆畫粘連的圖像,此選項(xiàng)可以使文字更清晰。換言之,如果文字、邊線本來就細(xì),經(jīng)此功能處理后就更雪上加霜了。
11. 柔化
能夠使銳利的邊緣、鋸齒變?nèi)岷汀5绻瓉韴D像就模糊,用此功能后大概就該出重影了。 不過如果“色彩”選擇了“單色”,也可以用此功能去除噪點(diǎn)。
12. 色彩
如果選擇“黑白漫畫”選項(xiàng),處理后的文件按256級(jí)灰度保存,對(duì)于黑白漫畫可以減少文件長(zhǎng)度,但對(duì)于彩色漫畫就太可惜了。如果選擇“彩色漫畫”,按24位真彩色格式存盤,對(duì)黑白漫畫來說又太浪費(fèi)。如果選擇“保持原樣”,則原來是256級(jí)灰度或24位真彩的,存盤后還是256級(jí)灰度或24位真彩,適用于那些封面為彩色,內(nèi)容為黑白的漫畫。如果畫面非常干凈,也可以選擇“16級(jí)灰度”、“8級(jí)灰度”或“4級(jí)灰度”,并選擇按PNG格式輸出,可以獲取最佳壓縮比。對(duì)于純文字頁面,選“單色”,并選擇按TIFF格式輸出,可以獲取最佳壓縮比。
13. 自動(dòng)色階/自動(dòng)對(duì)比度
對(duì)于彩色圖像來說,有時(shí)會(huì)由于掃描亮度設(shè)置失當(dāng)而造成畫面發(fā)白,或由于紙張陳舊而造成畫面偏黃。對(duì)于這種偏色畫面,通常可以通過色階調(diào)整進(jìn)行校正。
本軟件的“自動(dòng)色階”功能與PhotoShop的同名功能在算法上一致,但是在參數(shù)上與PhotoShop的缺省參數(shù)不一樣,效果要更強(qiáng)烈一些。通過修改PhotoShop的缺省參數(shù),可以達(dá)到相同的效果。
PhotoShop的“色階”功能雖然強(qiáng)大,但是色階是基于直方圖的變換,而每一張圖像的直方圖都可能不同,因此對(duì)于PhotoShop來說可以用“色階”慢慢調(diào)節(jié)每一張圖像,但對(duì)于本軟件這種用一套參數(shù)處理一系列圖片的情況,“色階”顯然不適用,只能用“自動(dòng)色階”。
自動(dòng)色階功能由于是對(duì)三原色直方圖分別進(jìn)行校正,因此校正后可能會(huì)出現(xiàn)偏色,如偏黃的校正后偏藍(lán)。如果不希望出現(xiàn)偏色,可以選擇“自動(dòng)對(duì)比度”,自動(dòng)對(duì)比度針對(duì)灰度直方圖進(jìn)行調(diào)整,因此不會(huì)出現(xiàn)偏色。
14. 旋轉(zhuǎn)
包括左、右旋轉(zhuǎn)90度,及180度旋轉(zhuǎn)。
15. 加粗
如果瀏覽的是純文字頁面(掃描電子書),并且筆畫較細(xì)影響閱讀,可以選擇“加粗”選項(xiàng)進(jìn)行加粗。對(duì)于彩色畫面,此選項(xiàng)會(huì)加深顏色。對(duì)于灰度圖像,此選項(xiàng)可能會(huì)出現(xiàn)小灰斑。
16. 不處理彩色圖像文件
只有在色彩選項(xiàng)為“黑白漫畫”或“16級(jí)灰度”、“8級(jí)灰度”或“4級(jí)灰度”、“單色”時(shí)才允許選擇此選項(xiàng)。如果需要處理的漫畫中包含彩色封面,可以勾選此選項(xiàng),以避免將封面轉(zhuǎn)成灰度或黑白圖像,造成損失。
13. 紅藍(lán)互換
將RGB中的R通道與B通道互換,通常用于瀏覽紅外照片等特殊圖像。
17. 復(fù)制文件日期、時(shí)間
如果選中,則結(jié)果文件與源文件具有相同的文件日期、時(shí)間;否則結(jié)果文件的日期、時(shí)間為當(dāng)前系統(tǒng)日期、時(shí)間。
圖像增強(qiáng)參數(shù)的作用順序:
在處理每一張圖片時(shí),本軟件依照下列先后順序:轉(zhuǎn)灰度、切邊、紅藍(lán)互換、放大、銳化、高亮度、自動(dòng)色階/自動(dòng)對(duì)比度、曲線調(diào)節(jié)、亮度、對(duì)比度、Gamma校正、柔化、加粗、縮小、填白、旋轉(zhuǎn)、減色。
如果需要批量處理的順序與上述順序不同,可以采用多遍處理的方法,即第一遍處理后,再進(jìn)行第二遍處理,中間結(jié)果存儲(chǔ)為無損壓縮的PNG格式,以免損失。
如果奇偶頁需要處理的參數(shù)不同,可以將奇偶頁復(fù)制到不同的文件夾,然后再處理。下面這個(gè)批處理命令將奇數(shù)頁文件(文件名以1、3、5、7、9結(jié)尾)移動(dòng)到odd文件夾:
for %%a in (1 3 5 7 9) do move *%%a.* odd
密技曝光
一、256 vs. 24-bit
不論是漫畫還是其他圖像,只用黑/白二色的幾乎沒有,黑白漫畫一般用256級(jí)灰度,少數(shù)用16級(jí)、8級(jí)、4級(jí)灰度;彩色漫畫和照片一般用24位真彩色表示,少數(shù)可以用256色。
在進(jìn)行本軟件所支持的任何一項(xiàng)圖像處理的時(shí)候,都需要對(duì)圖像的每一個(gè)象素的R、G、B值進(jìn)行四則運(yùn)算,再將運(yùn)算結(jié)果保存為象素的R、G、B值。低于24位色的所有圖像,如16位色、8位(256)色、4位(16)色、二位(4)色,讀/寫象素R、G、B值時(shí)均需頻繁進(jìn)行移位運(yùn)算和邏輯運(yùn)算,而24位色以上的圖像,由于每個(gè)象素的R、G、B值分別用DIB位流中的一個(gè)字節(jié)表示,只需移動(dòng)字節(jié)指針即可進(jìn)行訪問,因此速度優(yōu)化十分明顯。
考慮到速度的優(yōu)化和代碼的簡(jiǎn)化,本程序每讀入一幅圖像,均先轉(zhuǎn)換為24位真彩色,以后所有的圖像處理運(yùn)算均針對(duì)24位DIB位流進(jìn)行,存盤的時(shí)候根據(jù)“色彩”選項(xiàng)設(shè)定JPEG、PNG、BMP編碼數(shù)據(jù)結(jié)構(gòu),將結(jié)果存為灰度或24位真彩。
二、Decode vs.encode
在編寫本程序的時(shí)候,我首先考慮的就是圖像文件的載入。在網(wǎng)絡(luò)上搜尋了一大圈,最后發(fā)現(xiàn)討論圖像解碼(decode,讀。┑奈恼隆⒋a和庫函數(shù),要比討論編碼(encode,存盤)的多得多。
其實(shí)如果要求的僅僅是將圖像文件顯示到屏幕,根本不需要任何第三方的代碼或組件,調(diào)用Windows本身的API就足夠了:用OleLoadPicture函數(shù)調(diào)入圖像(支持BMP、JGP、GIF、WMF等),再調(diào)用IPicture::Render函數(shù)即能顯示圖像,在Code Project上有不只一個(gè)VC++實(shí)例。
如果調(diào)用Render時(shí)使用的是自己創(chuàng)建的內(nèi)存DC,顯示完后在內(nèi)存DC中就生成了一幅DDB(device dependent bitmap,設(shè)備相關(guān)位圖),理論上講這時(shí)候就可以進(jìn)行圖像處理了,但實(shí)際上還存在問題:
對(duì)DDB的象素進(jìn)行操作保證慢得讓你想跳樓,只能通過API調(diào)用將DDB轉(zhuǎn)換為DIB(device independent bitmap,設(shè)備無關(guān)位圖)才能忍受,即在內(nèi)存中同時(shí)有兩份內(nèi)存拷貝,增加無謂的內(nèi)存消耗。
內(nèi)存DC、DDB均是與當(dāng)前顯示設(shè)備相兼容的,其所能表示的顏色數(shù)、內(nèi)存消耗也與當(dāng)前顯示設(shè)置相關(guān),如果當(dāng)前顯示器設(shè)定為256色,則原來24位真彩的JPG載入后也縮水成256色;如果當(dāng)前顯示器設(shè)置為32位色,雖然顏色不會(huì)縮水,但內(nèi)存消耗又上去了。而且誰知道用戶運(yùn)行程序的時(shí)候顯示器會(huì)設(shè)成什么樣?
DDB轉(zhuǎn)DIB除消耗內(nèi)存外,還需要消耗時(shí)間,圖像尺寸大、顏色設(shè)置高時(shí)更明顯。
由于以上種種原因,我雖然開始時(shí)采用了OleLoadPicture+Render的方法,但最后還是放棄了。
Windows API雖然提供了圖像解碼功能,但是沒有提供圖像編碼功能,因此在存盤的時(shí)候,一般還需要第三方工具的支持,不然就需要苦讀《圖像格式大全》,再熬夜寫代碼了。對(duì)于JPG格式,現(xiàn)在最有名也最流行的第三方工具有IJG和IJL兩個(gè)。