J'avais besoin de faire une image contenant uniquement du texte. Je suis passé d'un script mal écrit, sans paramètres et absolument pas utilisable autrement que pour un unique besoin à un script un peu moins mal écrit, avec paramètres.

Si ça peut servir à d'autres qu'à moi, tant mieux. Alors voici mon code :

  1. #!/bin/bash
  2.  
  3. # Check parameters
  4. if [ $# -ne 6 ]
  5. then
  6. echo "This script need 6 parameters to run"
  7. echo "Usage: $0 file content font color bgcolor density"
  8. echo " - file: path to the output file"
  9. echo " - content: path to the file containing the content to convert into an image"
  10. echo " - font: path to the font to use"
  11. echo " - color: text color"
  12. echo " - bgcolor: background and border color"
  13. echo " - density: size of the text"
  14. exit 1
  15. fi
  16. FILE=$1
  17. if [ -e $2 ]
  18. then
  19. CONTENT=$2
  20. else
  21. echo "The content file don't exist"
  22. exit 2
  23. fi
  24. if [ -e $3 ]
  25. then
  26. FONT=$3
  27. else
  28. echo "The font file don't exist"
  29. exit 3
  30. fi
  31. COLOR=$4
  32. BACKGROUND=$5
  33. DENSITY=$6
  34. TEMP=/tmp/Temp.Text.To.Image.png
  35.  
  36. # Create the image
  37. rm $FILE
  38. while read LINE
  39. do
  40. convert -fill $COLOR -density $DENSITY -font $FONT -trim +repage -border 5 -bordercolor $BACKGROUND -background $BACKGROUND text:- $TEMP <<< $LINE
  41. if [ -e $FILE ]
  42. then
  43. montage -tile 1x2 -background $BACKGROUND -geometry +0+0 $FILE $TEMP $FILE
  44. else
  45. mv $TEMP $FILE
  46. fi
  47. done < $CONTENT
  48.  
  49. rm $TEMP

Il est également disponible en téléchargement.