נ.ב. אם המחרוזות שאתה חותך הן בקידוד שתופס יותר מבייט אחד עבור כל אות, אזי אתה צריך להשתמש במקום זה ב mb_substr ולציין עבורה את הקידוד של הטקסט. אחרת: א) הספירה שלך לא תצא נכונה ב) סיכוי לא רע שתדפוק תווים באמצע, ואז תו אחד יהפוך לזבל לפני התמונה וזבל אחריה.
כמו כן אתה צריך לשקול מה קורה אם החיתוך הוא באמצע מילה... גם הפונ' wordwrap עשוייה להיות מעניינת (אבל לדעתי גם לא תתמוך במחרוזות multibyte...)