私はいくつかのフィックスマップを持っています(正確には36個)。
/* XPM */
static char * hide_active_xpm[] = {
"12 14 3 1",
" c None",
". c #EDEDED s active_color_2",
"+ c #313739 s active_text_color_2",
" ",
" ",
" ",
" ",
" ....++.... ",
" ....++.... ",
" .......... ",
" .......... ",
" ++++++++++ ",
" ++++++++++ ",
" .......... ",
" .......... ",
" ....++.... ",
" ....++.... "};
4倍(横2倍、縦2倍)もっと大きくしたいです。 Gtk 色を選択するために色が定義されていて、あまりにも多くの画像を編集するのに時間がかかりすぎるため、画像エディタは使用できません。それで私はコマンド/スクリプトを書くことができますか?すべてのピクセルを複製そしてすべてのピクセルラインを複製します。(7行目から)ファイルはいくつありますか?つまり、コマンド/スクリプトでこれを変更できます。
/* XPM */
static char * hide_active_xpm[] = {
"4 3 2 1",
". c #EDEDED s active_color_2",
"+ c #313739 s active_text_color_2",
"+...",
".++.",
"+.+."};
これに関して:
/* XPM */
static char * hide_active_xpm[] = {
"8 6 2 1",
". c #EDEDED s active_color_2",
"+ c #313739 s active_text_color_2",
"++......",
"++......",
"..++++..",
"..++++..",
"++..++..",
"++..++.."};
私の質問を確認していただきありがとうございます。
メシニックス
答え1
次のスクリプトは.xpm
ファイルを入力として使用し、目的の新しい出力を印刷します。
#!/bin/bash
#enlarge.sh
cat "$1" | while read -r line;
do
if echo "$line" | grep -vP "[[:alnum:]]" 1>/dev/null;
then
#The following line is applies to all pixel lines except the very last one
echo "$line" | sed 's/\(\+\|\.\)/&&/g;p' | grep -vP "\}\;$" || \
#The following line applies to the last one with "};" characters in the end
echo "$line" | sed 's/\(\+\|\.\)/&&/g' | sed 's/\}\;$/,/g' | sed 'p;s/\,$/\}\;/g'
else
echo "$line"
fi;
done;
希望する新しい出力が画面に印刷されます。出力をファイルとして印刷するには、次のようにします。
./enlarge.sh input.xpm > new.xpm
重要なヒント
スクリプトはsed正規表現に基づいています。テキストが複数行にわたって分散している状況では、これは非常に信頼できません。画像サイズを倍増したい場合はそれを使用しませんかmogrify
?使用法は次のとおりです。
mogrify -scale 200% image.xpm