我一直有toBase64()一段時間的問題。我希望有人能告訴我爲什麼CF toBase64()似乎失去了一些東西,即在我的例子中,它降低了圖像的質量。ImageNew toBase64編碼與ColdFusion質量損失問題
我有一個解決方案(請參閱下面的最後一個代碼示例),但我討厭不理解爲什麼,並且很想解決這個問題。
如果任何人都會如此友善地運行下面的代碼,那麼在toBase64轉換之後,您會看到圖像質量很差。沒什麼特別的,但編碼後看起來不太好。如果你從未注意到,那就試試吧,你會明白我的意思。
有誰知道爲什麼,或者如何在CF中解決這個問題?
<!--- EXAMPLE 1 --->
<!--- GET IMAGE - --->
<cfset image = ImageNew("test.png")>
<!--- BEFORE GOOD--->
<cfimage action="writeToBrowser" source="#image#" >
<cfset image = toBinary(toBase64(image)) />
<!--- AFTER --->
<cfimage action="writeToBrowser" source="#image#" >
<!--- Example 2 --->
<cfset image = ImageNew("test.png")>
<cfset FileWrite(expandPath('./converted.image'),toBinary(toBase64(image))) />
<!--- without any cfimage processing, the outputted file is a JPEG --->
我的解決方案是使用Java插件,一切似乎確定但對於原因,我不會進入這裏不是我可以做直播。代碼
image = createObject("java","it.sauronsoftware.base64.Base64").encode(image);
toBinary(image);
樣品圖像輸出上面可以在這裏找到:http://i56.tinypic.com/29fwiq.png 首先是前toBase64第二個是後,你可以看到在第二輸出toBase64功能後的圖像已經失去了一點質量。
更新:正如Peter指出的那樣,該問題似乎與ImageObject中的自動輸出/轉換代碼有關,以便爲toBase64函數提供二進制輸出以進行編碼。
更新我已提交了本作中,CF 9.0.1的一個bug,請投票給錯誤3177303 https://bugbase.adobe.com/index.cfm?event=bug&id=3177303
查看這裏的示例輸出:http://i56.tinypic.com/29fwiq.png PS我指出下面的肖恩,這與「質量」屬性無關,我只在我的例子中使用了cfimage進行示範。這個問題似乎與CF的toBase64的實現有關。 – Prometheus
這沒有任何意義,但是你說得對,錯誤在'toBase64'函數中 - 即'toBase64(ImageObject)'產生JPEG文件,即使原始文件是PNG。這應該在[cfbugs.adobe.com](http://cfbugs.adobe.com)(http://cfbugs.adobe.com)報告 –
我已經添加了另一個示例,顯示這與cfimage無關(儘管默認格式是PNG) 。 –