Created
May 30, 2011 03:55
-
-
Save softprops/998426 to your computer and use it in GitHub Desktop.
data uris
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<html> | |
<head></head> | |
<body> | |
<img src="data:image/png;base64,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"/> | |
</body> | |
</html> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
object Uris { | |
import org.apache.commons.codec.binary.Base64.encodeBase64 | |
import java.io.{ByteArrayOutputStream, File, FileInputStream, InputStream} | |
def dataUri(f: File, mime: String) = { | |
use(new FileInputStream(f)) { in => | |
def consume(in: InputStream, out: ByteArrayOutputStream, buf: Array[Byte]): Array[Byte] = { | |
in.read(buf) match { | |
case -1 => out.toByteArray | |
case num => | |
out.write(buf, 0, num) | |
consume(in, out, buf) | |
} | |
} | |
val data = new String(encodeBase64(consume(in, new ByteArrayOutputStream(), new Array[Byte](1024))), "utf-8") | |
"data:%s;base64,%s" format (mime, data) | |
} | |
} | |
def use[C <: { def close(): Unit }, T](c: C)(f: C => T): T = | |
try { f(c) } | |
finally { c.close() } | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Uris.dataUri(new java.io.File("/path/to/scala.png", "image/png")) // data:image/png;base64,iVBORw0KGgoAA.... |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment