Adding Logo to PNG Image
Problem
You want to add your logo to a png
image generated by OEDepict TK.
See example in Table 1.
image generated by OEDepict TK |
image with OpenEye logo |
Ingredients
Difficulty Level
Download
Solution
OEDepict TK does not provide functionality to paste a png
image into the
png
image generated for a molecule.
But this can be easily achieved by using the Pillow Python image processing library.
The following code illustrates how to superimpose a logo in the bottom right corner
of the molecule image.
1#!/usr/bin/env python3
2import sys
3try:
4 from PIL import Image
5except ImportError:
6 print("Please install Pillow from: https://pypi.python.org/pypi/Pillow/3.0.0")
7 sys.exit(1)
8
9
10def main(argv=[__name__]):
11
12 if len(sys.argv) != 4:
13 print("Usage %s <image> <logoimage> <outimage>" % argv[0])
14 return 1
15
16 inimage, logo, outimage = sys.argv[1], sys.argv[2], sys.argv[3]
17 add_logo(inimage, logo, outimage)
18
19 return 0
20
21
22def add_logo(mfname, lfname, outfname):
23
24 mimage = Image.open(mfname)
25 limage = Image.open(lfname)
26
27 # resize logo
28 wsize = int(min(mimage.size[0], mimage.size[1]) * 0.25)
29 wpercent = (wsize / float(limage.size[0]))
30 hsize = int((float(limage.size[1]) * float(wpercent)))
31
32 simage = limage.resize((wsize, hsize))
33 mbox = mimage.getbbox()
34 sbox = simage.getbbox()
35
36 # right bottom corner
37 box = (mbox[2] - sbox[2], mbox[3] - sbox[3])
38 mimage.paste(simage, box)
39 mimage.save(outfname)
40
41
42if __name__ == "__main__":
43 sys.exit(main(sys.argv))
Usage
Usage
addlogo.py
script with
molecule.png
and
logo.png
test images
prompt > python3 addlogo.py molecule.png logo.png molecule-logo.png
Discussion
To install Pillow in a Python 3 conda environment:
prompt > conda create -n oecookbook python=3
prompt > source activate oecookbook
(oecookbook) prompt > pip install Pillow