Я провел тест, создав изображение той же молекулы с помощью MolToImage с постепенно увеличивающимся размером. размеры. Я изменил масштаб этих изображений до размера = (600,600), а затем объединил их в GIF. Вот результат.

Вот мой код
Код: Выделить всё
from glob import glob
from rdkit import Chem
from rdkit.Chem import Draw
from PIL import Image,ImageDraw,ImageFont
def make_frames_from_smi(smi):
for i in range(10):
s = (i+3)*100
mol = Chem.MolFromSmiles(smi)
img = Draw.MolToImage(mol,size=(s,s))
img = img.resize((600,600))
draw = ImageDraw.Draw(img)
text = '%d: Initial Size: (%d,%d)'%(i+1,s,s)
font_size = 40
font = ImageFont.truetype("arial.ttf", font_size) # Use your desired font
# Calculate text position
image_width, image_height = img.size
text_x = (image_width - (bbox[2] - bbox[0])) // 2
text_y = 20 # Adjust the vertical position as needed
draw.text((text_x, text_y), text, font=font, fill='black')
img.save('%03dtest.png'%i)
def make_gif_from_frames(paths):
frames_paths = glob(paths)
frames = [Image.open(imgp) for imgp in frames_paths]
frames[0].save("mols.gif", format="GIF", append_images=frames, save_all=True, duration=500, loop=False)
# make RDKit mol obj.
smi = 'CN(C)CC1CCCCC1(C2=CC(=CC=C2)OC)O'
make_frames_from_smi(smi)
make_gif_from_frames('*.png')
Подробнее здесь: https://stackoverflow.com/questions/768 ... tently-for