使用scala下载图像文件

时间:2012-09-04 15:49:38

标签: scala

我正在尝试下载Latex公式的图像文件。以下是我正在使用的代码

    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大小的文件,它正常工作。

Incomplete image

Expected image

2 个答案:

答案 0 :(得分:10)

您传递的是错误的字符串,"\f"被解释为转义序列,并为您提供一个"form feed"个字符。

更好:

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}$$""")

答案 1 :(得分:2)

另一种选择是使用更清洁的系统命令

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") !!