나는 다음과 같은 몇 가지 픽스맵을 가지고 있습니다(정확히는 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