Jw_cad 情報交換室−その3New

 JWW についての情報交換の場としてお使いください
初心者の方などのご相談は Jw_cad 相談 室−その2をご利用ください
なお、情報交換室と相談室の両方に同じ内容を投稿するのはご遠慮ください

2009年9月以前の発言過去ログのページからご覧ください。

それ以降の過去ログは消失しています。
申し訳ありませんが、復活の予定はありません。


  新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索 ┃設定 ┃過去ログ ┃ホーム  
285 / 1490     ←次へ | 前へ→

ImageMagick
 kojima  - 17/1/18(水) 20:47 -
ImageMagickという、非常に便利な画像処理ツールを知りました。

imagemagick日本語マニュアル
http://imagemagick.rulez.jp/archives/15
コマンドラインの1行記述で画像フォーマットの変換が簡単にできることに驚きました。
今まで知らなかったのが、非常に勿体ない思いです。

以下、JWWで編集された画像の文字情報で、元画像を加工した新画像の作成・表示。
元画像と編集画像を横結合した新画像を作成して表示させる外部変形を作成してみました。
新画像は、ペイントで開きます。(閉じると次の画像の処理に移ります)


@REM 画像の編集(トリム・回転 他)
@echo off
REM #jww
REM #cd
REM #bz
REM #zz
REM #zw
REM #zc
REM #hf
REM #h3
REM #hp
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -x %~f0 temp.txt >jwc_temp.txt
pause
goto end
#!ruby -Ks
include Math
path=Dir.pwd;path.gsub!("/","\\")
puts "h#"
=begin
↓JWWで編集された画像文字の座標ファイル表記
画像名 , トリム後の横幅 , トリム後の高さ , トリム左下X座標/元横幅 , トリム左下Y座標/元横幅 , トリム後の横幅/元横幅 , 回転角度
^@BMC:\My_Documents\現場調査写真\before.jpg,134.956,64.9247,0.14623,0.254553,0.674779,0


↓ImageMagickの主なコマンド
convert 変換前の画像名 -crop widthxheight+x+y 変換後の画像名 #トリム
convert before.jpg -crop 50x50+20+20 after.jpg #トリム
convert before.jpg -rotate +45 after.jpg #回転
convert before.jpg -flip after.jpg #垂直方向の反転
convert before.jpg -flop after.jpg #水平方向の反転
convert before.jpg before.png #画像フォーマットの変換(jpg->png)
convert before.jpg bmp3:before.bmp #従来のbmp画像へ変換(jpg->bmp)
convert +append before1.jpg before2.jpg after.jpg #before1.jpgとbefore2.jpgを横結合したafter.jpgの作成
convert -append before1.jpg before2.jpg after.jpg #before1.jpgとbefore2.jpgを縦結合したafter.jpgの作成
=end
#画像の編集
def gz_rota_trim(g_file,g_fname,zahyo,dir,path,kakutyosi,g_array)
width=zahyo[1].to_f
height=zahyo[2].to_f
old_width=width/zahyo[5].to_f
x=old_width*zahyo[3].to_f
y=old_width*zahyo[4].to_f
system("identify -format \"%w %h\" #{g_fname}>gtemp.txt")
g_width,g_height=0,0
open("gtemp.txt","r"){|f|
f.gets
g_width,g_height=$_.split
}
g_width=g_width.to_f;g_height=g_height.to_f;

aspect=g_height/g_width
hiritu=g_width/old_width
kakudo=zahyo[6].to_f
x=x*hiritu
old_height=old_width*aspect
y=g_height-(y+height)*hiritu
w=width*hiritu;h=height*hiritu
new_gfile="#{g_file.gsub(/\,|\\|\:/,"_")}#{kakutyosi}"

unless g_array.include?(new_gfile)
STDERR.puts "#{new_gfile}をサイズ変更しています"
system("convert #{g_fname} -crop #{w}x#{h}+#{x}+#{y} #{new_gfile}>nul")
unless kakudo==0
STDERR.puts "#{new_gfile}を回転しています"
system("convert #{new_gfile} -rotate #{-1*kakudo} #{new_gfile}>nul")
end
STDERR.puts "#{new_gfile}の処理が終わりました"
end
g_array<<new_gfile
system("convert +append #{g_fname} #{new_gfile} temp#{kakutyosi}")#元画像と新画像の横結合
STDERR.puts "元画像 #{g_fname} を表示します"
system("mspaint #{g_fname}")
STDERR.puts "編集後の画像 #{new_gfile} を表示します"
system("mspaint #{new_gfile}")
STDERR.puts "結合画像を表示します"
system("mspaint temp#{kakutyosi}")
end
g_array=[];g_no=1
while ARGF.gets
xy=$_.split
if xy[0]=~/^file=/
file_name=$'.chomp
dir,fname=File.split(file_name)
dir.gsub!("/","\\")
end
if xy[0]=~/^ch/
if $_=~/\"/
moji=$'.chomp
pre_moji=$`
end
if moji=~/^\^@BM/
g_file=$'
if g_file=~/^\%temp\%/
g_file2=$'
zahyo=g_file2.split(",")
g_fname=zahyo[0]
if g_fname =~/\..{3}$/
pr_g_fname=$`
kakutyosi=$&
end
tody=Time.new
t_str=tody.strftime("%Y%m%d")
dir_array=Dir.entries("C:\\jww")
g_dir=""
dir_array.each{|item|
if item =~ /^#{t_str}\-\d+\-\d+$/
begin
g_dir=item
open(g_dir+"\\"+g_fname,"rb"){|f|}
break
rescue
next
end
end
}
g_fname2 = "C:\\jww\\"+g_dir.gsub("/","\\")+"\\"+g_fname
if(zahyo.size>3 && (zahyo[3].to_f != 0 or zahyo[4].to_f != 0 or zahyo[5].to_f != 1 or zahyo[6].to_f != 0))
g_fname = "gtemp#{g_no}#{kakutyosi}"
system("convert #{g_fname2} bmp3:#{g_fname}")
g_file2= g_fname+","+zahyo[1..-1].join(",")
gz_rota_trim(g_file2,g_fname,zahyo,dir,path,kakutyosi,g_array)
File.delete(g_fname)
g_no += 1
else
STDERR.puts "#{g_fname}は編集されていません"
system("mspaint #{g_fname2}")
end
else
zahyo=g_file.split(",")
g_fname=zahyo[0]
if g_fname =~/\..{3}$/
pr_g_fname=$`
kakutyosi=$&
end
unless g_fname=~/\\/
g_fname=dir+"\\"+g_fname
end
if(zahyo.size>3 && (zahyo[3].to_f != 0 or zahyo[4].to_f != 0 or zahyo[5].to_f != 1 or zahyo[6].to_f != 0))
gz_rota_trim(g_file,g_fname,zahyo,dir,path,kakutyosi,g_array)
else
STDERR.puts "#{g_fname}は編集されていません"
system("mspaint #{g_fname}")
end
end
end
end
end
__END__
:end


引用なし

パスワード


<Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko@ai126189032118.58.access-internet.ne.jp>
・ツリー全体表示

ImageMagick kojima 17/1/18(水) 20:47
Re:ImageMagick マチャプチャレ 17/1/20(金) 6:51

285 / 1490     ←次へ | 前へ→
  新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索 ┃設定 ┃過去ログ ┃ホーム  
 679947
ページ:  ┃  記事番号:  

C-BOARD Moyuku v1.03b3
Jw_cad Copyright (C)1997-2016 Jiro Shimizu & Yoshifumi Tanaka