Convert it in a ppt format no colour changes just copy paste as it is a ppt format
~/
PowerPoint image-only slides preserve original screenshot fidelity
~/attachments/dab8b216-4044-482e-bbac-219f6d5cd037
mkdir -p "/tmp/workspace/unit-3-audit-ppt/output" && python -c "from pptx import Presentation; from pptx.util import Inches; from PIL import Image; from pathlib import Path; base=Path('/tmp/workspace/attachments/dab8b216-4044-482e-bbac-219f6d5cd037'); imgs=[base/'1000547997.jpg',base/'1000547999.jpg',base/'1000548001.jpg']; prs=Presentation(); prs.slide_width=Inches(13.333333); prs.slide_height=Inches(7.5); blank=prs.slide_layouts[6]; [(lambda s,p: s.shapes.add_picture(str(p),0,0,width=prs.slide_width,height=prs.slide_height))(prs.slides.add_slide(blank),img) for img in imgs]; prs.save('/tmp/workspace/unit-3-audit-ppt/output/Unit_3_Audit.pptx'); print('saved',len(prs.slides))"
python -c "from pptx import Presentation; from pathlib import Path; p=Path('/tmp/workspace/unit-3-audit-ppt/output/Unit_3_Audit.pptx'); prs=Presentation(str(p)); print('exists=',p.exists(),'bytes=',p.stat().st_size,'slides=',len(prs.slides)); [print(i+1, len(s.shapes), s.shapes[0].shape_type, s.shapes[0].left, s.shapes[0].top, s.shapes[0].width, s.shapes[0].height) for i,s in enumerate(prs.slides)]"
Unit 3 Audit
Presentation · PPTX
Edit mortality to 0 and morbidity to 2
~/
python-pptx replace an embedded image presentation
python -c "from PIL import Image,ImageDraw,ImageFont; from pathlib import Path; src=Path('/tmp/workspace/attachments/dab8b216-4044-482e-bbac-219f6d5cd037/1000547999.jpg'); out=Path('/tmp/workspace/unit-3-audit-ppt/output/1000547999_edited.jpg'); im=Image.open(src).convert('RGB'); d=ImageDraw.Draw(im); font_path='/usr/share/fonts/truetype/liberation2/LiberationSans-Regular.ttf'; font=ImageFont.truetype(font_path,28); # redraw only the two requested centered lines on their original white background for y,txt in [(320,'Mortality-0'),(365,'Morbidity-2')]: bbox=d.textbbox((0,0),txt,font=font); w=bbox[2]-bbox[0]; d.rectangle((400,y-4,640,y+35),fill='white'); d.text(((im.width-w)/2,y),txt,font=font,fill=(45,45,45)) im.save(out,quality=100,subsampling=0); print(im.size, out, out.stat().st_size)" && python -c "from pptx import Presentation; from pathlib import Path; inp=Path('/tmp/workspace/unit-3-audit-ppt/output/Unit_3_Audit.pptx'); out=Path('/tmp/workspace/unit-3-audit-ppt/output/Unit_3_Audit_Mortality0_Morbidity2.pptx'); edited=Path('/tmp/workspace/unit-3-audit-ppt/output/1000547999_edited.jpg'); prs=Presentation(str(inp)); s=prs.slides[1]; old=s.shapes[0]; left,top,width,height=old.left,old.top,old.width,old.height; sp=old._element; sp.getparent().remove(sp); s.shapes.add_picture(str(edited),left,top,width=width,height=height); prs.save(str(out)); print(out, len(prs.slides), out.stat().st_size)"
/usr/share/fonts/truetype
python -c "import matplotlib.font_manager as fm; print(fm.findfont('DejaVu Sans')); print(fm.findfont('Arial'))"
python -c "from PIL import Image,ImageDraw,ImageFont; from pathlib import Path; src=Path('/tmp/workspace/attachments/dab8b216-4044-482e-bbac-219f6d5cd037/1000547999.jpg'); out=Path('/tmp/workspace/unit-3-audit-ppt/output/1000547999_edited.jpg'); im=Image.open(src).convert('RGB'); d=ImageDraw.Draw(im); font=ImageFont.truetype('/opt/amazon/genesis1p-tools/venv/lib/python3.12/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSans.ttf',28); [d.rectangle((360,y-5,680,y+37),fill='white') for y in (320,365)]; [(lambda b: d.text(((im.width-(b[2]-b[0]))/2,y),txt,font=font,fill=(45,45,45))) (d.textbbox((0,0),txt,font=font)) for y,txt in [(320,'Mortality-0'),(365,'Morbidity-2')]]; im.save(out,quality=100,subsampling=0); print('edited image',im.size,out.stat().st_size)" && python -c "from pptx import Presentation; from pathlib import Path; inp=Path('/tmp/workspace/unit-3-audit-ppt/output/Unit_3_Audit.pptx'); out=Path('/tmp/workspace/unit-3-audit-ppt/output/Unit_3_Audit_Mortality0_Morbidity2.pptx'); edited=Path('/tmp/workspace/unit-3-audit-ppt/output/1000547999_edited.jpg'); prs=Presentation(str(inp)); s=prs.slides[1]; old=s.shapes[0]; pos=(old.left,old.top,old.width,old.height); old._element.getparent().remove(old._element); s.shapes.add_picture(str(edited),*pos); prs.save(str(out)); print('ppt',out.exists(),out.stat().st_size,'slides',len(prs.slides))"
python -c "from pptx import Presentation; from pathlib import Path; p=Path('/tmp/workspace/unit-3-audit-ppt/output/Unit_3_Audit_Mortality0_Morbidity2.pptx'); prs=Presentation(str(p)); s=prs.slides[1]; sh=s.shapes[0]; print('slides',len(prs.slides),'slide2_shapes',len(s.shapes),'type',sh.shape_type,'position',sh.left,sh.top,sh.width,sh.height,'file_bytes',p.stat().st_size)"
Unit 3 Audit Mortality0 Morbidity2
Presentation · PPTX
Convert it in a ppt format no colour changes just copy paste as it is a ppt format
~/
mkdir -p "/tmp/workspace/unit-3-audit-ppt-v2/output" && python -c "from pptx import Presentation; from pptx.util import Inches; from pathlib import Path; base=Path('/tmp/workspace/attachments/dab8b216-4044-482e-bbac-219f6d5cd037'); imgs=[base/'1000547997 (1).jpg',base/'1000548597.jpg',base/'1000548001 (1).jpg']; [(_ for _ in ()).throw(FileNotFoundError(p)) for p in imgs if not p.exists()]; prs=Presentation(); prs.slide_width=Inches(13.333333); prs.slide_height=Inches(7.5); blank=prs.slide_layouts[6]; [prs.slides.add_slide(blank).shapes.add_picture(str(img),0,0,width=prs.slide_width,height=prs.slide_height) for img in imgs]; dest=Path('/tmp/workspace/unit-3-audit-ppt-v2/output/Unit_3_Audit_Updated.pptx'); prs.save(str(dest)); print(dest, len(prs.slides), dest.stat().st_size)"
python -c "from pptx import Presentation; from pathlib import Path; p=Path('/tmp/workspace/unit-3-audit-ppt-v2/output/Unit_3_Audit_Updated.pptx'); prs=Presentation(str(p)); print('exists=',p.exists(),'slides=',len(prs.slides),'bytes=',p.stat().st_size); [print(i+1,'shapes=',len(s.shapes),'type=',s.shapes[0].shape_type,'full_slide=',(s.shapes[0].left,s.shapes[0].top,s.shapes[0].width,s.shapes[0].height)==(0,0,prs.slide_width,prs.slide_height)) for i,s in enumerate(prs.slides)]"
Unit 3 Audit Updated
Presentation · PPTX