2

画像を base64 でエンコードされた文字列に読み込むにはどうすればよいImageReaderですか?

HtmlUnit を使用したソース コードの例を次に示します。次のbase64文字列を取得したいimg

  WebClient wc = new WebClient();
  wc.setThrowExceptionOnFailingStatusCode(false);
  wc.setThrowExceptionOnScriptError(false);
  HtmlPage p = wc.getPage("http://flickr.com");
  HtmlImage img = (HtmlImage) p.getByXPath("//img").get(3);
  System.out.println(img.getImageReader().getFormatName());
4

3 に答える 3

4

標準Java 2D APIの一部であるHtmlUnit のHtmlImage#getImageReader()戻り値。を使用して任意のフレーバーの に書き込むことができます。javax.imageio.ImageReaderBufferedImageOutputStreamImageIO#write()

Apache Commons Codecには、装飾Base64OutputStreamできる がありますOutputStream

HtmlImage img = (HtmlImage) p.getByXPath("//img").get(3);
ImageReader imageReader = img.getImageReader();
BufferedImage bufferedImage = imageReader.read(0);
String formatName = imageReader.getFormatName();
ByteArrayOutputStream byteaOutput = new ByteArrayOutputStream();
Base64OutputStream base64Output = new base64OutputStream(byteaOutput);
ImageIO.write(bufferedImage, formatName, base64output);
String base64 = new String(byteaOutput.toByteArray());

または、ファイルに直接書き込みたい場合:

// ...
FileOutputStream fileOutput = new FileOutputStream("/base64.txt");
Base64OutputStream base64Output = new base64OutputStream(fileOutput);
ImageIO.write(bufferedImage, formatName, base64output);
于 2010-06-18T11:46:16.973 に答える
0

あなたが何を望んでいるのか正確にはわかりません。

しかし、Base64 のものを含む独自の Reader (javax.imageio.stream.ImageInputStreamImpl を参照) を作成する場合はどうでしょうか。おそらく、この外部の無料の Base64Encoderが役に立ちます。

最終的にこのように使用できるものはありますか?

WebClient wc = new WebClient(); 
wc.setThrowExceptionOnFailingStatusCode(false); 
wc.setThrowExceptionOnScriptError(false); 

HtmlPage p = wc.getPage("http://flickr.com"); 
HtmlImage img = (HtmlImage) p.getByXPath("//img").get(3); 

MyBase64EncodingReader reader = new MyBase64EncodingReader(img);
System.out.println(reader.toString());
于 2010-06-18T11:22:02.193 に答える
0

encodeBase64 メソッドのいずれかを使用できます

apache commons codecから。

String(bytes[]) コンストラクターを使用して、結果のバイト配列から文字列を作成します。

于 2010-06-18T11:22:20.123 に答える