5

ラテックスフォーミュラの画像ファイルをダウンロードしようとしています。以下は私が使用しているコードです

    var out: OutputStream = null;
    var in: InputStream = null;

    try {
      val url = new URL("http://latex.codecogs.com/png.download?$$I=\frac{dQ}{dt}$$")

      val connection = url.openConnection().asInstanceOf[HttpURLConnection]
      connection.setRequestMethod("GET")
      in = connection.getInputStream
      val localfile = "sample2.png"
      out = new BufferedOutputStream(new FileOutputStream(localfile))
      val byteArray = Stream.continually(in.read).takeWhile(-1 !=).map(_.toByte).toArray

      out.write(byteArray)
    } catch {
      case e: Exception => println(e.printStackTrace()) 
    } finally {
      out.close
      in.close
    }

ダウンロードはできますが、完全な画像をダウンロードしていません。予想される画像サイズは約517バイトですが、ダウンロードしているのは275バイトだけです。何がうまくいかないのでしょうか。不完全な画像と完全な画像を添付しました。私を助けてください。同じコードを使用して、1MBを超えるサイズのファイルをダウンロードしましたが、正しく機能しました。

不完全な画像

期待される画像

4

2 に答える 2

10

不正な文字列を渡しています。これ"\f"はエスケープシーケンスとして解釈され、単一の「フォームフィード」文字を提供します。

より良い:

val url = new URL("http://latex.codecogs.com/png.download?$$I=\\frac{dQ}{dt}$$")

また

val url = new URL("""http://latex.codecogs.com/png.download?$$I=\frac{dQ}{dt}$$""")
于 2012-09-04T15:56:22.967 に答える
3

別のオプションは、はるかにクリーンなシステムコマンドを使用することです

import sys.process._
import java.net.URL
import java.io.File

new URL("""http://latex.codecogs.com/png.download?$$I=\frac{dQ}{dt}$$""") #> new File("sample2.png") !!
于 2014-02-18T09:55:26.083 に答える