鍍金池/ 問答/HTML5  PHP  HTML/ 使用Ajax傳遞Canvas轉(zhuǎn)化的Base64格式圖片出錯。

使用Ajax傳遞Canvas轉(zhuǎn)化的Base64格式圖片出錯。

因?yàn)橐鲆粋€給圖片加水印的效果,所以打算前端使用Canvas將水印圖片繪制到用戶選擇的圖片上,再將處理后的圖片傳給PHP的Apache服務(wù)器。

結(jié)果可以保存成圖片,但是圖片的效果與預(yù)期不符合。

前端在發(fā)送數(shù)據(jù)到服務(wù)器端之前,預(yù)覽那個Base64編碼的圖片是達(dá)到了預(yù)期的效果的。

預(yù)期效果

圖片描述

實(shí)際效果
圖片描述

這個實(shí)際效果是我截圖的,原圖保存下來的可以在電腦上打開預(yù)覽,但是在論壇的上傳圖片無法正常預(yù)覽

前后端再分別保存出了圖片轉(zhuǎn)的Base64字符串。
發(fā)現(xiàn)前端發(fā)送的字符串和后端接收的字符串是不同的。

于是寫了個函數(shù),打印出不同,主要集中在以下位置:

str1---OkablOxV5i
str2---Okabl0XV5i
str1---kablOxV5iE
str2---kabl0XV5iE
str1---If3RqOxaDJ
str2---If3Rq0xaDJ
str1---JOI52Oxh1I
str2---JOI520xh1I
str1---OgJhUOxb91
str2---OgJhU0xb91
str1---SRA1yOx9KE
str2---SRA1y0x9KE
str1---xxwn3OxbaE
str2---xxwn30XbaE
str1---xwn3OxbaEs
str2---xwn30XbaEs
str1---O3irgOxSGL
str2---O3irg0XSGL
str1---3irgOxSGLE
str2---3irg0XSGLE
str1---LBs/SOxbuO
str2---LBs/S0xbuO
str1---5aW8POx/7v
str2---5aW8P0X/7v
str1---aW8POx/7vW
str2---aW8P0X/7vW
str1---hQpEoOxCQU
str2---hQpEo0XCQU
str1---QpEoOxCQUF
str2---QpEo0XCQUF
str1---mWMdHOxt9x
str2---mWMdH0xt9x
str1---Y+gAvOxajf
str2---Y+gAv0Xajf
str1---+gAvOxajfN
str2---+gAv0XajfN

在有關(guān)于0O,Xx的位置,前端上傳的字符串和后端接收的字符串產(chǎn)生了不同。。。

在網(wǎng)上搜了下,得到的多是在發(fā)送Base64的時候的加號和空格的問題。

服務(wù)器端使用的PHP語言版本為v5.6
上傳使用的jQuery$.ajax()方法。

沒google到相關(guān)的信息,所以來論壇向大家請教以下

-0-

回答
編輯回答
陌上花

都是打水印的話,為什么不把這不操作交給后端處理。
你們通過$.ajax 發(fā)送數(shù)據(jù)的時候你的這個 base64 是 直接字符串過去,還是怎么處理的。
麻煩貼下 你們network 的請求參數(shù)方便查看

2017年6月25日 00:01