一本の木に白っぽい花と赤っぽい花を付ける、珍しい桜を発見しました。
紅白でめでたいですね。
一本の木に白っぽい花と赤っぽい花を付ける、珍しい桜を発見しました。
紅白でめでたいですね。
上図のように、ファイル名で対応関係を示した写真とグラフ画像が存在します。
ちなみに、これらのグラフ画像も 画像ファイルからRGB値を取り出す で出力したRGB値から GMT ver.5 を使用してスペクトルを描画したものです。
#/bin/bash psfile=画像.ps gmt gmtset MAP_GRID_PEN_PRIMARY 0.2p,#AAAAAA gmt psbasemap -JX17c/25c -R0/17/0/25 -Bg0.1 -P -K > $psfile gmt gmtset MAP_GRID_PEN_PRIMARY 1.0p,#000000 gmt psbasemap -JX17c/25c -R0/17/0/25 -Bg1 -P -O -K >> $psfile y=17 # 画像の下端 for thema in 海 崖 百合 do # キャプションの上端 y2=`bc -l << _BC_ $y - 0.1 _BC_` # 写真画像の貼り付け gmt psimage ${thema}.jpg -J -R \ -Dx2.0c/${y}c+r300+w4.064c/7.315c+jBL -O -K >> $psfile # 写真画像のキャプション echo 6.064 ${y2} ${thema}.jpg |\ gmt pstext -J -R \ -F+jTR+a0.0+f12p,GothicBBB-Medium-UniJIS-UTF8-H,0/0/0\ -Gwhite -O -K >> $psfile # グラフ画像の貼り付け gmt psimage ${thema}_graph.jpg -J -R \ -Dx7.0c/${y}c+r300+w8.467c/7.315c+jBL -O -K >> $psfile # グラフ画像のキャプション echo 15.467 ${y2} ${thema}_graph.jpg |\ gmt pstext -J -R \ -F+jTR+a0.0+f12p,GothicBBB-Medium-UniJIS-UTF8-H,0/0/0\ -Gwhite -O -K >> $psfile # 画像の下端8cm下げ y=`expr $y - 8` done convert -density 150 -quality 69 画像.ps 画像.jpg
主目盛1cm、副目盛1mmの方眼紙を作成し、写真を右から2cmに、グラフを右から7cmに配置します。
下から17cm、9cm、1cmの位置に、それぞれのテーマごとに配置します。
ちなみに写真の画素数は480×864、グラフ画像は1000x864です。psimage のw4.064c/7.315cとか、w8.467c/7.315cというオプションにより、解像度300DPIで、アスペクト比も保存されるように設定しています。
例ではconvert コマンドでJPEG画像に変換していますが、この応用として何ページ分も書き出して、PDFファイルにしてしまうことも容易です。
「めでたいでんしゃ」は、ここで見ることができます。
convert コマンドで各画素のRGB値を取得し、MYSQLを使用して色調加工するというスクリプトです。convert コマンドの使用方法については、
ImageMagickで画像からRGB値を取り出す、またその逆 - Qiita
を大変参考にさせて頂きましたので、ほとんど備忘録のようなものです。
#!/bin/bash #convert -resize 240x432 photo_org/DSC00097.JPG 崖.jpg #convert -resize x432 -crop 240x432+50+0 photo_org/DSC00098.JPG 海.jpg #convert -auto-orient -resize x432 photo_org/P3060023.JPG 椿.jpg #convert -auto-orient -resize x432 photo_org/P6120012.JPG 百合.jpg # ImageMagick pixel enumeration: 243,432,255,srgb for thema in 海 # 画像ファイル do temp=`mktemp ./XXXX.tmp` # JPEG形式を平テキストに変換し、データベース登録 convert ${thema}.jpg txt: |\ awk -F"[,:)]" 'NR>1{print $1,$2,$3,$4,$5}' |\ sed -e "s/(//g" |\ awk '{print $1,$2,$3,$4,$5}' > $temp mysql image << _SQL_ drop table if exists ${thema}; create table ${thema} ( x int, y int, r int, g int, b int ); load data local infile "$temp" into table ${thema} fields terminated by " "(x,y,r,g,b); _SQL_ rm $temp # XY方向それぞれの画素数を取得 nx=`mysql image -N <<_SQL_ select max(x)-min(x)+1 from ${thema}; _SQL_` ny=`mysql image -N <<_SQL_ select max(y)-min(y)+1 from ${thema}; _SQL_`
# ここで赤画層と緑画層の加工を実施 mysql image << _SQL_ update ${thema} set r=0 where b-r>48; update ${thema} set g=0 where b-g>64; _SQL_ # CONVERTコマンドで使用可能なテキストファイルに変換 printf "# ImageMagick pixel enumeration: %d,%d,255,srgb\n" $nx $ny > ${thema}.txt mysql image -N <<_SQL_ > $temp select x,y,r,g,b from ${thema} order by x,y; _SQL_ cat $temp |\ awk '{printf "%3d,%3d: (%3d,%3d,%3d)\n",$1,$2,$3,$4,$5}' \ >> ${thema}.txt # テキスト形式を再度JPG形式画像に変換 convert ${thema}.txt ${thema}_blue.jpg rm $temp done
あるStray Engineer の日記 も今月で100記事を超えました。
過去の記事を、何らかの方法でオフラインでも見ることができるようにしておこうと思ったのですが、一つ一つ印刷するのは面倒です。
そこでwkhtmltopdfコマンドを使用してPDFに変換してしまうことにしました。wkhtmltopdfコマンドは
sudo apt install wkhtmltopdf
で簡単にインストールすることができます。
事前に、はてなブログの「設定→詳細設定→エクスポート」でMT形式のテキストファイルは作成しておいて下さい。ここではシェル変数 export_file がそれにあたります。
#!/bin/bash parent_URL="http://s-e-hyphen.hatenadiary.jp/entry/" export_file=s-e-hyphen.hatenadiary.jp.export.txt
# BASENAMEを含む行をgrepで検索する declare -a line=(\ `cat ${export_file} |\ grep -n "BASENAME" |\ sed -e "s/:.*$//g"`\ ) mysql blog_summary << _SQL_ drop table if exists summary; create table summary( title varchar(100), URL varchar(100), date date ); _SQL_ for (( i=0; i<${#line[*]}; i++ )) do line_title=`expr ${line[$i]} - 1` # タイトルはBASENAMEの1行上 child_URL=`cat ${export_file} | sed -n ${line[$i]}'p' | sed -e "s/^.*: //g"` title=`cat ${export_file} | sed -n ${line_title}'p' | sed -e "s/^.*: //g"` date=`echo ${child_URL} | cut -c1-10` URL=${parent_URL}${child_URL} mysql blog_summary << _SQL_ insert into summary(title,URL,date) value("$title","$URL","$date"); _SQL_ done temp=`mktemp ./XXXX.tmp` mysql -N blog_summary << _SQL_ > $temp select date,URL from summary order by date; _SQL_ while read date URL do wkhtmltopdf ${URL} PDF/${date}.pdf done < $temp rm $temp
カレントディレクトリの一つ下のPDFというディレクトリに”作成日.pdf”という名前でPDFファイルが記事の数だけ作成されます。
ただ後で気づいたのですが、このスクリプトの実行に伴ってカウンターを大量に回してしまっていました。運営さん、ごめんなさい。
GMTはベクトル図を描画するのには大変便利ですが、ちょっとしたラスタ画像を貼り付けたいとき、その方法を書いてくれている文書は余り有りませんでした。
まさかできないということはないだろうと調べてみたところ、それらしいものがありました。psimageというモジュールです。
デジカメ写真のEXIF情報からカメラ位置を取得し、UTM53系の日本地図に赤丸を付けたうえで、写真も貼り付けてみました。
そりゃぁ、こういう需要も有りますよね。
#!/bin/bash psfile=photo.ps photo=ORIGINAL.JPG out=photo_small.jpg # デジカメ写真のままだとサイズが大きいので少し間引く convert -density 300x300 -resize x600 -quality 69 ${photo} ${out} # EXIFから緯度・経度の取得 lon=`jhead $photo |\ grep "GPS Longitude" |\ awk -F":" '{print $2}' |\ awk '{print $2,$3,$4}' |\ sed -e "s/d /:/g" |\ sed -e "s/m /:/g" |\ sed -e "s/s//g"` lat=`jhead $photo |\ grep "GPS Latitude" |\ awk -F":" '{print $2}' |\ awk '{print $2,$3,$4}' |\ sed -e "s/d /:/g" |\ sed -e "s/m /:/g" |\ sed -e "s/s//g"` gmt gmtset MAP_FRAME_PEN 0.5p,#000000 gmt gmtset MAP_GRID_PEN_PRIMARY 0.5p,#000000 # 海岸線の描画 gmt pscoast -JU53/15c -R133/143/30/38 -Bxag1 -Byag1 -Dh -Glightbrown -Wthinnest \ -Slightblue -W1p -K -P -Y12c > $psfile # カメラ位置の描画 echo $lon $lat |\ gmt psxy -J -R -B -Sc0.2c -Gred -O -K >> $psfile printf "%s %s\n%s %s" $lon $lat 136.8 34.0 |\ gmt psxy -J -R -B -W2p+vb0.3c+g#00000 -O -K >> $psfile # 写真貼り付け用座標 gmt gmtset MAP_FRAME_PEN 0p,#FFFFFF@0 gmt gmtset MAP_GRID_PEN_PRIMARY 0p,#FFFFFF@0 gmt psbasemap -JX20c/10c -R0/20/0/10 -Bx -By \ -O -K -Y-3.0c >> $psfile gmt psimage ${out} -J -R -Dx5.5c/10c+r300+w5.33i/3i+jTL -O -K >> $psfile # 外部テキストファイルからコメントの取得 cat comment.txt |\ gmt pstext -J -R -B -Gwhite -F+f12p,GothicBBB-Medium-UniJIS-UTF8-H,0/0/0+jML -O >> $psfile
convert $psfile -density 300x300 -quality 60 -crop 595x595 OUTPUT.jpg