如果你是網站開發人員肯定有遇到過這樣的需求,上傳圖片的同時需要根據前臺頁面生成不同尺寸的縮略圖。更變態的是需求是網站用了一段時間了突然某一天客戶說要增加一個縮略圖的功能。並且把原來上傳的圖片都要按最新的要求生成不同尺寸的縮略圖。
現在我們通過直接在圖片地址後面添加參數,圖片根據不同的參數自動生成客戶想要的尺寸。比如:
<code># 方法 一
http://localhost/images/pic.jpg?50x100
# 方法 二
http://localhost/images/pic.jpg_50x100.jpg/<code>
圖片地址後面添加 _50x100.jpg、 _100x100.jpg 就能生成相應的圖片尺寸,類似於淘寶的圖片地址。
<code>https://img.alicdn.com/imgextra/i2/4272571566/O1CN01NmMzdK1NRGpAhLTCk_!!4272571566.jpg_430x430q90.jpg/<code>
這樣網站後臺就不需要修改任意代碼,對已經上傳的圖片也不需要重新生成縮略圖,前臺只要在圖片後面添加相應的尺寸需求就可以生成相應的縮略圖,這樣既方便又直接。
實現原理:(偽靜態與重定向--RewriteRule)
<code># .htaccess 文件
# 自動生成縮略圖
RewriteRule ^.*(?:gif|jpg|jpeg|png|GIF|JPG|JPEG|PNG)(?:_)([0-9]+)x([0-9]+)(?:m([1-5]))?(?:v([A-Za-z0-9_]*))?(?:.)?(?:gif|jpg|jpeg|png|GIF|JPG|JPEG|PNG)?$ thumb.html [L,QSA]/<code>
將後綴為 _50x100.jpg 這種類型的後綴地址,自動重定向到指定的php文件(該文件專門用來處理縮略圖的生成和顯示圖片)。這個php文件會根據參數將圖片自動縮放,並且將生成的圖片緩存到服務器,後面訪問的時候直接可以訪問緩存,減少服務器資源。
- Github地址(php版本):
<code>https://github.com/mingfunwong/autoCropImage/<code>
- Github地址(thinkphp5.1版本):
<code>https://github.com/zjutsxj/autoCropImage/<code>
- composer 安裝(thinkphp5.1版本):
<code>composer require zjutsxj/think-autocropimage/<code>
你有什麼好的想法請在下面留言。
閱讀更多 壹毛 的文章