1. 程式人生 > >ThinkPHP自動化為已經上傳的圖片新增「 響應式」水印(資料夾遍歷部分)

ThinkPHP自動化為已經上傳的圖片新增「 響應式」水印(資料夾遍歷部分)


TPImageWater


我在之前寫過一個controller樣式的擴充套件,主要是迴圈遍歷以前上傳的照片,加上水印。

應用的時候遇到了多個問題,因此對Controller進行了改造完善,並且提出了根據資料夾遍歷和資料庫記錄兩種形式的遍歷加水印。

【響應式】根據不同大小、長寬比例的圖片自動調整水印大小和位置,做到所有圖片與需求樣式基本一樣。

主要解決的問題如下

1、圖片的大小不是統一的,之前寫的Controller預設大小是統一的,加水印存在問題。(甚至有圖片小於水印圖片大小)

2、水印的位置,需求方要求在一個固定的位置。thinkphp手冊上只有固定的8個位置,不符合要求。而由於圖片的大小,導致水印位置無法確定。

提前說一下現在存在的問題

1、不能一條一條輸出成功字串一邊處理檔案(見後面效果)

2、速度慢的嚇人。30S只能處理250張照片,4000多張處理速度為10分鐘左右。

因此需要設定最大執行時間0,也就是不限制執行時間。

真心希望有哪位仁兄能夠解決這個問題。

檔案說明:

1、增加入口檔案「waterimage.php」,主要是不修改原來的系統,Application資料夾生成為./AppWaterImage

2

2、當然首頁index.php是一個輸出內容,主要是【FileImageWaterController.class.php】和【SqlImageWaterController.class.php】

3、為了保證可訪問性,增加了code引數,可以更改程式碼中的code,保證訪問的正確性。當然刪除是最好的選擇。

問題的解決:

圖片大小不統一,因此水印大小不能是預設大小。

水印的位置要求必須是固定的,標準樣式在圖中已經標明。

4

最蛋疼的事情就是:

標準僅僅是標準,裡面400多張圖片各種大小,長寬比例,甚至還有比水印的小的圖片,也要加水印,所以關鍵問題怎樣做到響應式的新增水印(雖然我不知道這個響應式用的是否恰當)

【解決方案】

5

TP框架方面需要注意的問題

我在thinkphp論壇中看到有人問tp的水印位置只有九個位置,官網手冊也沒有給出說明,只說了9個。

其實TP水印在3.2已經進行了改版,water()方法有一個location引數可以是陣列型別的 array(x,y)

,分別代表x,y座標,我們根據不同圖片確定水印大致的位置就是通過比例計算改變x,y座標實現的。

具體的TP框架中的GD庫中有的。

遇到的新問題

因為需要根據比例計算水印圖片的大小,因此對water.jpg需要進行操作,一開始使用的是png點陣圖,通過png背景鏤空實現鏤空效果。

但是TP對水印圖片thumb()處理後,png點陣圖格式被破壞,所以只能使用water.jpg格式圖片,透明使用引數80%進行透明,如下面的圖,這樣的解決的效果其實不是很好,png點陣圖鏤空效果是最好,但是我沒有解決這個問題。

處理效果】不同大小長寬比例的圖片水印卻差不多。

p
11121314

【具體程式碼】(可以檢視下面關於檔案遍歷的程式碼,也可以檢視碼雲或者是github地址)

下面程式碼可能輸出過程中html標籤替代問題,建議直接下載gitosc或者是github的原始碼檢視


相關推薦

ThinkPHP自動化為已經圖片新增 響應水印(資料部分)

TPImageWater 我在之前寫過一個controller樣式的擴充套件,主要是迴圈遍歷以前上傳的照片,加上水印。 應用的時候遇到了多個問題,因此對Controller進行了改造完善,並且提出了根據資料夾遍歷和資料庫記錄兩種形式的遍歷加水印。 【響應

thinkPHP利用ajax非同步圖片並顯示、刪除

近來學習tp5的過程中,專案中有個發帖功能,選擇主題圖片。如下: 利用原始的檔案上傳處理,雖然通過原始js語句能實時顯示上傳圖片,但是這樣的話會涉及很多相容問題。使用ajax技術,實現選擇性刪除所選圖片功能,並不會有相容問題。 表單檔案form: <form method="po

對於處理圖片新增水印的簡單操作

圖片上傳之後的流程如下圖  首先你的新增一個引用System.Drawing.dll  前端只要有個圖片上傳功能就可以了 後臺程式碼也簡單,只需將圖片存起來,再呼叫 後言:水印原理很簡單,沒接觸過得可以自己去試一試,本部落格有不足之處,請大家多多包涵,謝謝

C#如何操控FTP,獲取FTP檔案或資料列表,獲取FTP檔案大小,FTP,FTP刪除檔案,FTP新建資料、刪除資料

C#如何操控FTP 出處:http://www.cnblogs.com/rond/archive/2012/07/30/2611295.html,http://www.cnblogs.com/rond   關於FTP的應用免不了要對FTP進行增刪查改什麼的。通過搜尋,整理和修改

web專案中將的檔案儲存到伺服器的某個資料,保證clean tomcat時不會被清理掉

 String testPath = request.getSession().getServletContext().getRealPath("");//tomcat下   File directory = new File(testPath);//設定為當前資料夾

java實現zip解壓及判斷壓縮包資料功能

直接上Service,通過程式碼看思路貫穿整個功能,很多工具類可以複用,檔案路徑可以去看我部落格裡的(使用ResourceBundle國際化資原始檔讀取properties詳解) 這篇製作方法url:https://blog.csdn.net/qq_17025903/arti

githubvue專案的時候忽略node-modules資料

 github上傳vue專案的時候忽略node_modules資料夾,原因在專案下面有個.gitignore檔案,這個檔案裡面寫的 就是那些不上傳到git上面的檔案,開啟就會發現 “node_modules/ ”就在列

git(3)----git常用、下載、刪除檔案(或資料)命令

重點內容一、新增檔案 (1)git add 檔名 將檔案新增,注意此處檔名是當前cd命令下開啟的地方存在的檔名,並且要帶字尾。 git add myfileName 如:* git add fengcai.txt 命

程式無許可權伺服器和無法再伺服器中建立資料的解決辦法

由於我們的測試環境的的伺服器ip換了一個新的,執行一段時間各端反應無法圖片無法上傳伺服器,然後我看了下日誌,發現有這個錯誤 permission denied  最後我就在伺服器中 ps -ef |

關於ueditor圖片後拖動圖片自動新增style樣式 手機端不能自適應問題

最近在做專案,發現使用ueditor上傳圖片後拖動圖片不能手機端自適應的問題,在網上搜索和好多都不能解決,經過多次測試 發現拖拽圖片的時候會自動新增style屬性,導致圖片不能自使用手機端,經過檢視原始碼發現在ueditor.all.min.js裡發現了這樣一句程式碼: 6

百度編輯器在服務器置頂路徑 解決圖片創建目錄失敗的方法(Thinkphp

插入 borde images tor true ges border name 線上 1、設置文件夾權限2、修改/* 前後端通信相關的配置,註釋只允許使用多行方式 */{ /* 上傳圖片配置項 */ "imageActionName": "uploadimag

php使用curl新增微信臨時素材(圖片)

() command ltrim apps 地址 ken define image post <?php$APPID=‘‘; $APPSECRET=‘‘; $info=json_decode(file_get_contents("https://api.wei

layer 彈框 cropper 裁剪圖片thinkphp 3 使用 CropAvatar.class.php

最近要做一個上傳裁剪圖片功能,但是網上收出來的東西,知識點都是對的。但是就是沒說清楚,也無法連續起來用。 經過自己整理出來的一套程式碼,親測可用! 不用多說,直接上菜。 PS:搜尋引擎收錄的還是很垃圾...... 呼叫頁面,簡單程式碼(可複用) <img src="{$info.co

PHP將圖片自動放縮到指定解析度,保持清晰度

class AutoImage{ private $image; public function resize($src, $width, $height){ //$src 就是 $_FILES['upload_image_file']['tmp_name']

phpcms v9 取消圖片的時候新增水印

有時候在編輯器中上傳圖片時,我們不希望上傳的圖片被自動加上phpcms-v9自帶的水印,那麼我們應該如何徹底的去除phpcms-v9自帶的水印功能呢?   第一步:找到statics/images/water 資料夾,將去刪除;如果系統找不到water資料夾的水印圖片,則將會執行第二步,給圖

淘淘商城第二天—完成商品新增功能 商品類目選擇 圖片 圖片伺服器搭建 kindEditor富文字編輯器的使用 商品新增功能

1、實現商品類目選擇功能 1.1需求 在商品新增頁面,點選“選擇類目”顯示商品類目列表: 請求初始化樹形控制元件的url:/item/cat/list 1.2 EasyUI tree資料結構 資料結構中必須包含: Id:節點id Text:節

新增圖片

兩個JSP頁面   JSP頁面 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); St

spring boot + vue新增圖片功能

餘近日開發spring boot +vue的後臺管理專案,涉及到檔案上傳功能,使用之前專案的檔案上傳模組,一直有問題。遂經過兩天的百度,加個人理解,最終解決了基本的檔案上傳功能。     首先,html頁面: <!--form中是要加這個enctype的-->

tp5新增 圖片

<form class="form-horizontal" action="{:url('index/Goods/addg')}" method="post" enctype="multipart/form-data">