Pro*_*eus 5 coldfusion coldfusion-9
一段时间以来,我一直在使用 toBase64() 问题。我希望有人能告诉我为什么 CF toBase64() 似乎丢失了一些东西,即在我的例子中它降低了图像的质量。
我有一个解决方案(请参阅下面的最后一个代码示例),但我讨厌不明白为什么并且很想解决这是 CF。
如果有人愿意运行下面的代码,您会发现在 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#" >
Run Code Online (Sandbox Code Playgroud)
<!--- 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 --->
Run Code Online (Sandbox Code Playgroud)
我的解决方案是使用一个 java 插件,一切似乎都很好,但出于某些原因,我不会进入这里,而不是我可以做的事情。
image = createObject("java","it.sauronsoftware.base64.Base64").encode(image);
toBinary(image );
Run Code Online (Sandbox Code Playgroud)
上面代码的示例图像输出可以在这里找到:http : //i56.tinypic.com/29fwiq.png 首先是在 toBase64 之前,然后是之后,您可以看到在第二个输出上的 toBase64 函数之后图像质量有所下降.
更新:正如 Peter 所指出的,问题似乎在于 ImageObject 中的自动输出/转换代码为 toBase64 函数提供二进制输出进行编码。
更新我已将此作为 CF 9.0.1 中的错误提交,请投票支持错误 3177303 https://bugbase.adobe.com/index.cfm?event=bug&id=3177303
使用toBase64(imageGetBlob(myImg))
请参阅:http ://blog.dkferguson.com/index.cfm/2010/4/27/All-your-base64-are-not-equal
| 归档时间: |
|
| 查看次数: |
1676 次 |
| 最近记录: |