Add more specific mimetype support for images #390 (#391)

This commit is contained in:
Jaifroid 2018-06-06 21:12:43 +01:00 committed by GitHub
parent a89e462fa9
commit ddaa3586f1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 1 deletions

View File

@ -84,6 +84,7 @@ var regexpJPEG = new RegExp(/\.jpe?g$/i);
var regexpPNG = new RegExp(/\.png$/i);
var regexpJS = new RegExp(/\.js/i);
var regexpCSS = new RegExp(/\.css$/i);
var regexpSVG = new RegExp(/\.svg$/i);
// Pattern for ZIM file namespace - see http://www.openzim.org/wiki/ZIM_file_format#Namespaces
var regexpZIMUrlWithNamespace = new RegExp(/(?:^|\/)([-ABIJMUVWX])\/(.+)/);
@ -118,6 +119,9 @@ function fetchEventListener(event) {
else if (regexpPNG.test(title)) {
contentType = 'image/png';
}
else if (regexpSVG.test(title)) {
contentType = 'image/svg+xml';
}
}
else if (nameSpace === '-') {
console.log("It's a layout dependency : " + title);

View File

@ -934,7 +934,16 @@ define(['jquery', 'zimArchiveLoader', 'util', 'uiUtil', 'cookies','abstractFiles
selectedArchive.getDirEntryByTitle(title).then(function(dirEntry) {
selectedArchive.readBinaryFile(dirEntry, function (fileDirEntry, content) {
// TODO : use the complete MIME-type of the image (as read from the ZIM file)
uiUtil.feedNodeWithBlob(image, 'src', content, 'image');
var url = fileDirEntry.url;
// Attempt to construct a generic mimetype first as a catchall
var mimetype = url.match(/\.(\w{2,4})$/);
mimetype = mimetype ? "image/" + mimetype[1].toLowerCase() : "image";
// Then make more specific for known image types
mimetype = /\.jpg$/i.test(url) ? "image/jpeg" : mimetype;
mimetype = /\.tif$/i.test(url) ? "image/tiff" : mimetype;
mimetype = /\.ico$/i.test(url) ? "image/x-icon" : mimetype;
mimetype = /\.svg$/i.test(url) ? "image/svg+xml" : mimetype;
uiUtil.feedNodeWithBlob(image, 'src', content, mimetype);
});
}).fail(function (e) {
console.error("could not find DirEntry for image:" + title, e);