簡體   English   中英

base64圖像回到png使用java太長的常量

[英]base64 image back to png using java too long constant

我正在嘗試學習java base64轉換為圖像

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();



    }
}

問題是它的長度太長(它是:))。 現在我該怎么做才能實現這個目標? 在此輸入圖像描述 謝謝

簡短的回答是,您的源代碼中不應該有這么長的String作為常量。 如何更改它取決於您的實際情況:

  • 如果您只是學習base64,請使用較短的字符串。 它將達到相同的學習效果。
  • 如果這只是編譯器實現限制問題(即問題是String常量限制,而不是RAM內存限制),請將文本放入文件並在運行時加載它。 或者,如果您確實堅持將源代碼嵌入到源代碼中,請將String拆分為幾個常量大小的塊,並在運行時將它們連接起來。
  • 如果圖像的base64編碼對於你的進程可用的RAM內存量實在太大,請使用流式方法(我沒有使用sun.misc包,但快速瀏覽一下http:// www .docjar.com / docs / api / sun / misc / BASE64Decoder.html顯示了decodeAtomdecodeBufferToByteBuffer方法,看起來非常有前景。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM