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 |
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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #!/usr/bin/env python3
import sys
try:
from PIL import Image
except ImportError:
print("Please install Pillow from: https://pypi.python.org/pypi/Pillow/3.0.0")
sys.exit(1)
def main(argv=[__name__]):
if len(sys.argv) != 4:
print("Usage %s <image> <logoimage> <outimage>" % argv[0])
return 1
inimage, logo, outimage = sys.argv[1], sys.argv[2], sys.argv[3]
add_logo(inimage, logo, outimage)
return 0
def add_logo(mfname, lfname, outfname):
mimage = Image.open(mfname)
limage = Image.open(lfname)
# resize logo
wsize = int(min(mimage.size[0], mimage.size[1]) * 0.25)
wpercent = (wsize / float(limage.size[0]))
hsize = int((float(limage.size[1]) * float(wpercent)))
simage = limage.resize((wsize, hsize))
mbox = mimage.getbbox()
sbox = simage.getbbox()
# right bottom corner
box = (mbox[2] - sbox[2], mbox[3] - sbox[3])
mimage.paste(simage, box)
mimage.save(outfname)
if __name__ == "__main__":
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