2016-07-31 56 views
1

我想学习java的base64转换为图像的base64图像回用java太长时间不变

import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import redis.clients.jedis.Jedis; 

public class HelloWorld { 

    public static void main(String[] args) throws IOException { 

     byte[] btDataFile = new sun.misc.BASE64Decoder().decodeBuffer("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAn4AAAMUCAYAAAAiyCroAAAMGWlDQ1BJQ0MgUHJvZmlsZQAASImVVwdUU0kXnldSCEkogQhICb0J0qv0XgSkg42QBAglhkBQsSOLCq4FFVEUFV0Rsa0FkLUgo...AAABJRU5ErkJggg=="); 
     File of = new File("/Users/myfolder/Desktop/yourFile.png"); 
     FileOutputStream osf = new FileOutputStream(of); 
     osf.write(btDataFile); 
     osf.flush(); 



    } 
} 

问题PNG是它太长(它是:))恒定的。现在我能做些什么来实现这个目标? enter image description here 感谢

回答

0

简短的回答是,你不应该有这么长的String在源代码中的常数。如何改变它取决于你的实际情况:

  • 如果你只是在学习base64,使用较短的字符串。它会达到相同的学习效果。
  • 如果这只是一个编译器实现限制问题(即问题是String常量限制,而不是RAM内存限制),请将文本放入文件并在运行时加载它。或者,如果您确实坚持将源文本嵌入到源代码中,请将String分成几个大小不等的块并在运行时加入它们。
  • 如果基于64位编码的图像实在是太大RAM内存量的进程可以,使用流方法(我没有与sun.misc包的工作,但在http://www.docjar.com/docs/api/sun/misc/BASE64Decoder.html看一眼显示decodeAtomdecodeBufferToByteBuffer方法看起来很有前景