## 圖片處理
> 圖片是很重要的媒體元素,用好了,頁面會更加美觀,巧妙的利用圖片自適應特性,頁面的適配性也會更好。
基于tp的圖片處理方案。
- 裁剪
- 縮放
- 壓縮(服務器安裝開源壓縮方案)
- 緩存
- 提供直接輸出圖片流的地址/提供處理完成的圖片地址
- 占位圖生成(支持輸出date-base64-url編碼形式)
- 滿足移動端,2倍圖@2x.png
* * * * *
### 擴展
[移動端1px解決之道及2、3倍圖處理方法 - 簡書](https://www.jianshu.com/p/eba6bedd25b0)
[javascript - 前端頁面(移動端)使用二倍圖比一倍圖有什么好處呢? - SegmentFault 思否](https://segmentfault.com/q/1010000010733030)
[H5案例分享:Retina顯示屏-揭秘移動端的視覺稿通常會設計為傳統PC的2倍_H5案例分享](https://www.h5anli.com/articles/201610/retina.html)
[移動端前端適配方案對比 - 簡書](https://www.jianshu.com/p/e5ca5b78e03e)
>[danger] 高度定死,寬度自適應(這樣會怪怪的,很丑,如果是圖片的話會被拉伸的,**反而不固定高度的話,利用圖片特有的特性,圖片會按照原圖寬高比例進行等比縮放,自適應的**,但是這樣在圖片未加載完畢時沒有寬高,會有閃動問題,不過可以利用預先設置好比例的占位圖base64形式來做,原本圖片也按照相同比例進行處理,這樣就解決了閃動問題。同時resize時還能自適應,而無需用js來resize動態計算設置了等比寬高了。)
[Yupoo! 的網站技術架構 | DBA Notes](http://dbanotes.net/arch/yupoo_arch.html)
[ImageMagick簡介、GraphicsMagick、命令行使用示例 - CSDN博客](https://blog.csdn.net/cbbbc/article/details/52175559)
[PHP極其強大的圖片處理庫Grafika詳細教程(1):圖像基本處理 - CSDN博客](https://blog.csdn.net/qq_34657922/article/details/79479892)
[GD、ImageMagick、GraphicsMagick - CSDN博客](https://blog.csdn.net/baiwz/article/details/38420187)
[谷歌開源圖片壓縮算法Guetzli實測體驗報告 - 騰訊云+社區 - 博客園](https://www.cnblogs.com/qcloud1001/p/6595336.html)
[最有效地使用PNG:PNGOUT優化 - CSDN博客](https://blog.csdn.net/happydeer/article/details/50473961)
~~~
于是,我們有了第一條經驗:永遠別保存交錯格式的PNG文件。
僅僅是為了漸進式渲染,交錯式PNG會增大35%;
漸進式渲染讓人很困惑:圖像一開始是模糊的,然后漸漸變清晰。Philip Greenspun一語道破,“讀者無法判斷圖像何時加載完畢!”
標準的PNG為漸進式渲染提供了完美的解決方法,根本用不著交錯格式。它們可以自頂向下,以一種很簡單直接的方式渲染。
可是自頂向下,加載時無法獲知高度,會有閃動問題,難道圖片沒完全加載完畢也能預先輸出高度信息嗎,高度信息在圖片head里?不過任何時候,都不要相信在圖片未加載完畢時能得到圖片的高度,這是不可靠的,所以有要求的還是用base64占位圖吧。
~~~
[生成微縮圖 · php筆記 · 看云](http://www.hmoore.net/xiak/php-node/248832)
[用 imgproxy 自動縮放圖片](https://mp.weixin.qq.com/s/25Pt37Xe9_MdyJEX4Lm0eg)
[php擴展Imagick庫,如何實現gif轉webp - 開源中國社區](https://www.oschina.net/question/3783935_2274428)
[WebPconv | WebP File Converter | Romeolight](http://www.romeolight.com/products/webpconv/)
[關于Android圖片資源瘦身的奇思妙想 - 云+社區 - 騰訊云](https://cloud.tencent.com/developer/article/1004331)
[【騰訊云的1001種玩法】 Laravel 整合萬向優圖圖片管理能力,打造高效圖片處理服務 - 云+社區 - 騰訊云](https://cloud.tencent.com/developer/article/1004595)
[圖片流量節省大殺器:基于 CDN 的 sharpP 自適應圖片技術實踐 - 云+社區 - 騰訊云](https://cloud.tencent.com/developer/article/1004404)
[快速使用OSS圖片服務_圖片處理指南_對象存儲 OSS-阿里云](https://help.aliyun.com/document_detail/44686.html?spm=5176.8465980.img.ddetails.4e701450oW1H4t) (支持在 OSS 端對圖片文件進行縮放、裁剪、水印等處理)
> 阿里云等OOS存儲支持圖片處理,可以直接充當圖片服務器
* * * * *
### 相關開源項目
[PHP: GD 和圖像處理 函數 - Manual](http://www.php.net/manual/zh/ref.image.php)
[圖像處理 · ThinkPHP5.0完全開發手冊 · 看云](http://www.hmoore.net/manual/thinkphp5/177530)
[Convert, Edit, Or Compose Bitmap Images @ ImageMagick](http://www.imagemagick.org/script/index.php)
[GraphicsMagick Image Processing System](http://www.graphicsmagick.org/)
[google/guetzli: Perceptual JPEG encoder](https://github.com/google/guetzli)(Google開源的JPEG圖片壓縮算法,終于有個)
[TinyPNG – API Reference](https://tinypng.com/developers/reference/php)
[pngquant — lossy PNG compressor](https://pngquant.org/)
[Intervention/image: PHP Image Manipulation](https://github.com/Intervention/image)
[avalanche123/Imagine: PHP 5.3 Object Oriented image manipulation library](https://github.com/avalanche123/Imagine)
[AlloVince/EvaThumber: A light-weight url based image transformation php library](https://github.com/AlloVince/EvaThumber)(基于URL的圖片處理庫 (可實現縮略圖 | 二維碼 | 水印 | 面部識別等,基于PHP)
[kosinix/grafika: An image processing library for PHP](https://github.com/kosinix/grafika)
[george518/CoreImage: 裁剪核心圖片](https://github.com/george518/CoreImage)
[pel/pel: PHP Exif Library - library for reading and writing Exif headers in JPEG and TIFF files using PHP.](https://github.com/pel/pel)(PHP Exif)
[Ken Silverman's Utility Page](http://advsys.net/ken/utils.htm)
[flyimg/flyimg: Dockerized PHP7 application runs as a Microservice to resize and crop images on the fly. Get optimised images with MozJPEG, WebP or PNG using ImageMagick. Includes face detection, cropping, face blurring, image rotation and many other options. Abstract storage based on FlySystem in order to store images on any provider (local, AWS S3...).](https://github.com/flyimg/flyimg)
[rakibtg/PHP-ImageToWebp: A PHP class to convert JPG, JPEG, PNG or GIF images to webp format](https://github.com/rakibtg/PHP-ImageToWebp)(JPG, JPEG, PNG or GIF 圖片格式 轉換為 webp格式圖片)
[weserv/images: Source code of images.weserv.nl, to be used on your own server(s).](https://images.weserv.nl/#quick-reference)(一個成熟的圖像處理方案,除了支持一些常規的圖片處理外,還支持圖片模糊,灰度,圓形裁剪等有意思的處理)
[ImageOptim HTTP API for optimization on web servers](https://imageoptim.com/api)
[EvaThumber : 基于URL的圖片處理庫 (可實現縮略圖 | 二維碼 | 水印 | 面部識別等,基于PHP)](https://avnpc.com/pages/evathumber)
* * * * *
last update:2018-7-4 14:55:58
- 開始
- 公益
- 更好的使用看云
- 推薦書單
- 優秀資源整理
- 技術文章寫作規范
- SublimeText - 編碼利器
- PSR-0/PSR-4命名標準
- php的多進程實驗分析
- 高級PHP
- 進程
- 信號
- 事件
- IO模型
- 同步、異步
- socket
- Swoole
- PHP擴展
- Composer
- easyswoole
- php多線程
- 守護程序
- 文件鎖
- s-socket
- aphp
- 隊列&并發
- 隊列
- 講個故事
- 如何最大效率的問題
- 訪問式的web服務(一)
- 訪問式的web服務(二)
- 請求
- 瀏覽器訪問阻塞問題
- Swoole
- 你必須理解的計算機核心概念 - 碼農翻身
- CPU阿甘 - 碼農翻身
- 異步通知,那我要怎么通知你啊?
- 實時操作系統
- 深入實時 Linux
- Redis 實現隊列
- redis與隊列
- 定時-時鐘-阻塞
- 計算機的生命
- 多進程/多線程
- 進程通信
- 拜占庭將軍問題深入探討
- JAVA CAS原理深度分析
- 隊列的思考
- 走進并發的世界
- 鎖
- 事務筆記
- 并發問題帶來的后果
- 為什么說樂觀鎖是安全的
- 內存鎖與內存事務 - 劉小兵2014
- 加鎖還是不加鎖,這是一個問題 - 碼農翻身
- 編程世界的那把鎖 - 碼農翻身
- 如何保證萬無一失
- 傳統事務與柔性事務
- 大白話搞懂什么是同步/異步/阻塞/非阻塞
- redis實現鎖
- 淺談mysql事務
- PHP異常
- php錯誤
- 文件加載
- 路由與偽靜態
- URL模式之分析
- 字符串處理
- 正則表達式
- 數組合并與+
- 文件上傳
- 常用驗證與過濾
- 記錄
- 趣圖
- foreach需要注意的問題
- Discuz!筆記
- 程序設計思維
- 抽象與具體
- 配置
- 關于如何學習的思考
- 編程思維
- 談編程
- 如何安全的修改對象
- 臨時
- 臨時筆記
- 透過問題看本質
- 程序后門
- 邊界檢查
- session
- 安全
- 王垠
- 第三方數據接口
- 驗證碼問題
- 還是少不了虛擬機
- 程序員如何談戀愛
- 程序員為什么要一直改BUG,為什么不能一次性把代碼寫好?
- 碎碎念
- 算法
- 實用代碼
- 相對私密與絕對私密
- 學習目標
- 隨記
- 編程小知識
- foo
- 落盤
- URL編碼的思考
- 字符編碼
- Elasticsearch
- TCP-IP協議
- 碎碎念2
- Grafana
- EFK、ELK
- RPC
- 依賴注入
- 開發筆記
- 經緯度格式轉換
- php時區問題
- 解決本地開發時調用遠程AIP跨域問題
- 后期靜態綁定
- 談tp的跳轉提示頁面
- 無限分類問題
- 生成微縮圖
- MVC名詞
- MVC架構
- 也許模塊不是唯一的答案
- 哈希算法
- 開發后臺
- 軟件設計架構
- mysql表字段設計
- 上傳表如何設計
- 二開心得
- awesomes-tables
- 安全的代碼部署
- 微信開發筆記
- 賬戶授權相關
- 小程序獲取是否關注其公眾號
- 支付相關
- 提交訂單
- 微信支付筆記
- 支付接口筆記
- 支付中心開發
- 下單與支付
- 支付流程設計
- 訂單與支付設計
- 敏感操作驗證
- 排序設計
- 代碼的運行環境
- 搜索關鍵字的顯示處理
- 接口異步更新ip信息
- 圖片處理
- 項目搭建
- 閱讀文檔的新方式
- mysql_insert_id并發問題思考
- 行鎖注意事項
- 細節注意
- 如何處理用戶的輸入
- 不可見的字符
- 抽獎
- 時間處理
- 應用開發實戰
- python 學習記錄
- Scrapy 教程
- Playwright 教程
- stealth.min.js
- Selenium 教程
- requests 教程
- pyautogui 教程
- Flask 教程
- PyInstaller 教程
- 蜘蛛
- python 文檔相似度驗證
- thinkphp5.0數據庫與模型的研究
- workerman進程管理
- workerman網絡分析
- java學習記錄
- docker
- 筆記
- kubernetes
- Kubernetes
- PaddlePaddle
- composer
- oneinstack
- 人工智能 AI
- 京東
- pc_detailpage_wareBusiness
- doc
- 電商網站設計
- iwebshop
- 商品規格分析
- 商品屬性分析
- tpshop
- 商品規格分析
- 商品屬性分析
- 電商表設計
- 設計記錄
- 優惠券
- 生成唯一訂單號
- 購物車技術
- 分類與類型
- 微信登錄與綁定
- 京東到家庫存系統架構設計
- crmeb
- 命名規范
- Nginx https配置
- 關于人工智能
- 從人的思考方式到二叉樹
- 架構
- 今日有感
- 文章保存
- 安全背后: 瀏覽器是如何校驗證書的
- 避不開的分布式事務
- devops自動化運維、部署、測試的最后一公里 —— ApiFox 云時代的接口管理工具
- 找到自己今生要做的事
- 自動化生活
- 開源與漿果
- Apifox: API 接口自動化測試指南