Cscott has submitted this change and it was merged.

Change subject: Convert gifs to pngs.
......................................................................


Convert gifs to pngs.

Change-Id: Ia25fa8d9cdb99a15d8a17ae1e064fe48bf2f0307
---
M lib/index.js
1 file changed, 32 insertions(+), 8 deletions(-)

Approvals:
  Cscott: Verified; Looks good to me, approved



diff --git a/lib/index.js b/lib/index.js
index bb7c2fb..951ec48 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -3,6 +3,7 @@
 var json = require('../package.json');
 
 var domino = require('domino');
+var easyimage = require('easyimage');
 var fs = require('fs');
 var gammalatex = require('gammalatex');
 var guard = require('when/guard');
@@ -515,9 +516,26 @@
                });
        }).done();
        return deferred.promise.then(function(uniqname) {
-               // rename the file, then return the new filename
+               // rename the file, then return the new filename (relative to 
dir)
                return pcall(fs.rename, fs, path.join(dir, oldname), uniqname).
-                       then(function() { return uniqname; });
+                       then(function() { return path.relative(dir, uniqname); 
});
+       });
+});
+
+// convert gif to png.  takes a filename, returns a promise for a new filename
+var convertGif = guard(guard.n(5), function(info) {
+       return pcall(tmp.tmpName, tmp, {
+               dir: info.imagedir,
+               prefix: info.filename,
+               postfix: '.png'
+       }).then(function(name) {
+               return pcall(easyimage.convert, easyimage, {
+                       src: path.join(info.imagedir, info.filename),
+                       dst: name
+               }).then(function() {
+                       info.filename = path.relative(info.imagedir, name);
+                       return info;
+               });
        });
 });
 
@@ -525,6 +543,7 @@
 // (after image processing / renaming has been done)
 var processImages = function(metabook, builddir, options) {
        options.log('Processing images');
+       var imagedir = path.join(builddir, 'images');
        var imagemap = new Map();
        var imagedb =
                new Db(path.join(builddir, 'imageinfo.db'), { readonly: true });
@@ -536,14 +555,19 @@
                }
                var filename = val.filename;
                if (!filename) { return; }
-               // XXX convert gifs to pngs, and svgs to pngs
+               var pp = when.resolve({ imagedir: imagedir, filename: filename 
});
+               // convert gifs to pngs
+               if (val.mime === 'image/gif') {
+                       pp = pp.then(convertGif);
+               }
+               // xxx convert svgs to pdfs
                // rename file if it is not TeX safe.
-               var pp = when.resolve().then(function() {
-                       var safe = filename.replace(/[^A-Za-z0-9.:]+/g, '-');
-                       return (safe === filename) ? path.join(builddir, 
'images', safe) :
-                               renameFile(path.join(builddir, 'images'), 
filename, safe);
+               pp = pp.then(function(info) {
+                       var safe = info.filename.replace(/[^A-Za-z0-9.:]+/g, 
'-');
+                       return (safe === info.filename) ? safe :
+                               renameFile(imagedir, info.filename, safe);
                }).then(function(newname) {
-                       imagemap.set(key, newname);
+                       imagemap.set(key, path.join(imagedir, newname));
                });
                p = p.then(function() { return pp; }); // serialize completion
        }).then(function() {

-- 
To view, visit https://gerrit.wikimedia.org/r/96522
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ia25fa8d9cdb99a15d8a17ae1e064fe48bf2f0307
Gerrit-PatchSet: 1
Gerrit-Project: 
mediawiki/extensions/Collection/OfflineContentGenerator/latex_renderer
Gerrit-Branch: master
Gerrit-Owner: Cscott <[email protected]>
Gerrit-Reviewer: Cscott <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to