做一購物網(wǎng)站,改版N次,每次改版那產(chǎn)品列表圖的大小都會變,第一次是90*70,第二次改版又變成160*120,每次改版都得把產(chǎn)品圖片文件夾中的2W多張圖片一個一個轉(zhuǎn)為對應(yīng)的大小的圖片,以前用的是網(wǎng)上找的一個方法:
結(jié)果生成的列表圖總不成比例,有點變形,抽出該方法單獨測試,發(fā)現(xiàn)用哪個模式都不好,用HW肯定會變形,用W或者H的話生成的圖片大小并不是需要的大小,比如一張400*200的圖片,生成160*120的圖片,用W模式,結(jié)果生成的圖片是160*80,這個雖然看起來是不會變形的,但是在產(chǎn)品列表頁上的img標(biāo)題是固定了大小的,如:
<img width="160" height="120" />
這樣最后再配上那160*80的圖片生成的HTML代碼就為
<img width="160" height="120" src="160_80_aaa.jpg" />
這樣從界面上看起來又肯定會變形,因為80的高被拉到了120。用Cut模式,雖然生成的圖片會是160*120,但是發(fā)現(xiàn)會把圖像裁剪掉一部分,這個模式也不符合要求。
于是上網(wǎng)找生成縮略圖的方法,找啊找啊找,在JT的博客的某一篇文章里看到:http://www.cnblogs.com/jeffreyzhao/archive/2009/11/24/problem-of-generating-thumbnail-image.html,測試了一下這篇文章中的最后的那個方法,結(jié)果還是不能按照我所想的生成縮略圖的方法,267*248的圖片生成160*120的圖片,用博客里的那個方法,生成的等比例的圖片大小是129*120,如果放到已經(jīng)固定了大小的img標(biāo)簽中還是會變形,最終還是得自己來寫這個生成縮略圖的方法啊,嗯,應(yīng)該叫生成規(guī)定大小的圖像的方法吧。
要求:
1、不管源圖像的大小,最終都要生成預(yù)先定義好的大小的圖像
2、如果源圖像的寬高比預(yù)先定義的大小都要小,如 16*16 的圖像生成160*120的圖像,那么就相當(dāng)于把16*16的圖像畫到160*120圖像的中間,圖像背景色為白色
3、如果源圖像至少有一邊比預(yù)先定義好的大小要大,那么就先生成等比例縮放好的圖像,然后再畫到預(yù)先定義大小的圖像上,如:400*200的圖像生成160*120的圖像,則先生成等比例的160*80的圖像,然后再把該圖像畫到160*120圖像的中間
有了需求,再結(jié)合上面的一些兩個示例代碼,寫出了如下方法:
測試發(fā)現(xiàn)好像不支持GIF格式的,我只試過JPG格式的是可以,不知道其他的如PNG,BMP之類的行不行,懶得試了,反正產(chǎn)品圖片一般都是jpg格式的
以上方法使用示例如下:
經(jīng)測試,這樣生成的圖片就是160*120了,且不會變形。
代碼下載:http://niunan.net/download/genpic.7z