#!/bin/bash -e # Copyright (c) 2011 The Chromium OS Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. # # Render a text file into a bitmap. Files named '*.txt' are small font, those # nameed '*.TXT' are large font. # # Image parameters bg='#607c91' bluecolor='#9ccaec' bluefont="Helvetica-Narrow" bluepointsize=19 whitefont="Helvetica-Narrow" whitepointsize=30 tmpdir=$(mktemp -d /tmp/tmp.bmp.XXXXXX) trap "rm -rf $tmpdir" EXIT label_file="${tmpdir}/label.txt" for txtfile in $*; do bmpfile="${txtfile%.*}".bmp # Must strip off the leading U+FEFF byte order mark (bytes 0xEF,0xBB,0xBF) of # each file before I can pass it to imagemagick. Chomp any leading/trailing # whitespace too. perl -p -e 'BEGIN{ $/=undef; }' \ -e 'if (substr($_,0,3) eq "\xef\xbb\xbf") { substr($_, 0, 3) = ""; }' \ -e 's/^\s+//s;' -e 's/\s+$//s;' \ "$txtfile" > "$label_file" case "$txtfile" in *.txt) convert \ -background "$bg" -fill "$bluecolor" \ -font "$bluefont" -pointsize "$bluepointsize" \ -bordercolor "$bg" -border 0x1 -gravity Center \ label:'@'"$label_file" \ -colors 256 -compress none -alpha off \ "$bmpfile" echo "wrote $bmpfile" ;; *.TXT) convert \ -background "$bg" -fill "white" \ -font "$whitefont" -pointsize "$whitepointsize" \ -bordercolor "$bg" -border 0x10 -gravity Center \ label:'@'"$label_file" \ -colors 256 -compress none -alpha off \ "$bmpfile" echo "wrote $bmpfile" ;; *) echo "Ignoring $txtfile. Filname should end with .txt or .TXT" ;; esac done