生成規定大小的圖片(縮略圖生成)

做一購物網站,改版N次,每次改版那產品列表圖的大小都會變,第一次是90*70,第二次改版又變成160*120,每次改版都得把產品圖片文件夾中的2W多張圖片一個一個轉爲對應的大小的圖片,以前用的是網上找的一個方法:

結果生成的列表圖總不成比例,有點變形,抽出該方法單獨測試,發現用哪個模式都不好,用HW肯定會變形,用W或者H的話生成的圖片大小並不是需要的大小,比如一張400*200的圖片,生成160*120的圖片,用W模式,結果生成的圖片是160*80,這個雖然看起來是不會變形的,但是在產品列表頁上的img標題是固定了大小的,如:
<img width="160" height="120"   />
這樣最後再配上那160*80的圖片生成的HTML代碼就爲
<img width="160" height="120" src="160_80_aaa.jpg"   />
這樣從界面上看起來又肯定會變形,因爲80的高被拉到了120。用Cut模式,雖然生成的圖片會是160*120,但是發現會把圖像裁剪掉一部分,這個模式也不符合要求。
於是上網找生成縮略圖的方法,找啊找啊找,在JT的博客的某一篇文章裏看到:http://www.cnblogs.com/jeffreyzhao/archive/2009/11/24/problem-of-generating-thumbnail-image.html,測試了一下這篇文章中的最後的那個方法,結果還是不能按照我所想的生成縮略圖的方法,267*248的圖片生成160*120的圖片,用博客裏的那個方法,生成的等比例的圖片大小是129*120,如果放到已經固定了大小的img標籤中還是會變形,最終還是得自己來寫這個生成縮略圖的方法啊,嗯,應該叫生成規定大小的圖像的方法吧。
要求:
1、不管源圖像的大小,最終都要生成預先定義好的大小的圖像
2、如果源圖像的寬高比預先定義的大小都要小,如 16*16 的圖像生成160*120的圖像,那麼就相當於把16*16的圖像畫到160*120圖像的中間,圖像背景色爲白色
3、如果源圖像至少有一邊比預先定義好的大小要大,那麼就先生成等比例縮放好的圖像,然後再畫到預先定義大小的圖像上,如:400*200的圖像生成160*120的圖像,則先生成等比例的160*80的圖像,然後再把該圖像畫到160*120圖像的中間

有了需求,再結合上面的一些兩個示例代碼,寫出瞭如下方法:

測試發現好像不支持GIF格式的,我只試過JPG格式的是可以,不知道其他的如PNG,BMP之類的行不行,懶得試了,反正產品圖片一般都是jpg格式的
以上方法使用示例如下:

發佈了67 篇原創文章 · 獲贊 3 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章