docbook: scaling only bitmap images
authorFredrik Unger <fredrik.unger@openchip.com>
Mon, 2 Mar 2026 10:54:53 +0000 (11:54 +0100)
committerFredrik Unger <fredrik.unger@openchip.com>
Mon, 2 Mar 2026 10:54:53 +0000 (11:54 +0100)
selecting to scale only bitmap images, so that for example
svg images are untouched.

treecutter/docbook.py
treecutter/image.py

index 912d0e2c7b6ac38fe114bd0c061d2a8aac1ef4ec..213a75cf85ad4bcd36487a3770ee2a0ef7f393e6 100644 (file)
@@ -66,15 +66,18 @@ class Docbook():
         for i in images:
             os.chdir(self._dirname)
             im = i.get('fileref')
-            img = Image(im)
+            imf = im
             caption = db.caption()
-            for p in img.caption().split('\n\n'):
-                caption.append(db.para(p))
-            link = db.para(db.link(img.infostr(),
-                                   **{const.XLINK+"href": img.filename()}))
-            caption.append(link)
+            if im.endswith((".png", ".jpg")):
+                img = Image(im)
+                for p in img.caption().split('\n\n'):
+                    caption.append(db.para(p))
+                link = db.para(db.link(img.infostr(),
+                                       **{const.XLINK+"href": img.filename()}))
+                caption.append(link)
+                imf = img.resize(800,600)
             mo = db.mediaobject(db.imageobject(
-                db.imagedata(fileref=img.resize(800,600))),caption)
+                db.imagedata(fileref=imf)),caption)
             iop = i.getparent()
             mop = iop.getparent()
             mopp = mop.getparent()
index 184d387f82e27994af2a645bf71065fc8be18fe9..5f90a5a7dfeb5ee2cb94480db649e0a97f86c057 100644 (file)
@@ -31,7 +31,7 @@ class Image():
         outfile = "%s.%dx%d%s" % (outfile, size[0], size[1], ext)
         if not os.path.exists(outfile):
             im = PIL_Image.open(self._filename)
-            im.thumbnail(size, PIL_Image.ANTIALIAS)
+            im.thumbnail(size, PIL_Image.LANCZOS)
             if pad:
                 bg = PIL_Image.new('RGBA', size, (0, 0, 0, 0))
                 bg.paste(im,((size[0]-im.size[0])/2, (size[1]-im.size[1])/2))