blob: 44216363cac39a098d1bf96ca96929cdbc9ac8f0 [file] [log] [blame]
import 'dart:html' as Html;
import 'package:archive/archive.dart' as Arc;
import 'dart:convert';
/**
* Decode a zip file, extract a jpeg image file from it, and replace the
* image on the html page with the image from the zip file.
*/
void main() {
Html.ImageElement img = Html.querySelector('#trees');
String path = img.src;
path = path.substring(0, path.lastIndexOf('/'));
// Get the zip file from the same directory the image is in.
var req = new Html.HttpRequest();
req.open('GET', path + '/test.zip');
req.overrideMimeType('text\/plain; charset=x-user-defined');
req.onLoadEnd.listen((e) {
if (req.status == 200) {
// Convert the responseText to binary.
var bytes = req.responseText.split('').map((e){
return new String.fromCharCode(e.codeUnitAt(0) & 0xff);
}).join('').codeUnits;
// Decode the zip file.
Arc.Archive archive = new Arc.ZipDecoder().decodeBytes(bytes);
// Extract the cat.jpg file from the zip.
var jpg = archive.findFile('cat.jpg').content;
// Replace the html image content with the image we just extracted.
var jpg64 = BASE64.encode(jpg);
img.src = 'data:image/jpeg;base64,${jpg64}';
}
});
req.send('');
}