批量生成SVG图片,转换为png jpg
1.找到SVG文件的模板进行替换需要修改的内容,替换模板的需要修改的内容为具有特征的内容,
2.找到需要替换的CSV文件,读取内容,进行生成新的文件:
1-2脚本的书写:
require 'csv'a = CSV.read("nan-ao.csv")
b = File.read("nan-ao.svg")
#puts a.inspect
csv_text = File.read('nan-ao.csv')
csv = CSV.parse(csv_text, :headers => true)
csv.each do |row|
#puts row.to_hash
#puts row['姓名']
#puts row['编号']
c = b.sub("###NAME###", row['姓名']).sub("###NUMBER###", row['编号'])
#puts c
current_file_name = "image/2021年9月20日南澳失联老人救援#{row['姓名']}-#{row['编号']}.svg"
puts current_file_name
File.write(current_file_name, c)
end
3.生成png jpg文件
脚本:
Dir.entries('.').each do |e|
if e.include? 'svg'
command = %Q{ffmpeg -i "#{e}" "#{e.sub('svg', 'jpg')}"}
puts command
`#{command}`
end
endffmpeg png>>jpg
Dir.entries('.').each do |e|
if e.include? 'png'
command = %Q{ffmpeg -i "#{e}" "#{e.sub('png', 'jpg')}"}
puts command
`#{command}`
end
end
>p>脚本:Inkscape svg>>png
Dir.glob('*.svg').each do |file|
puts "== processing file: #{file}"
inkscape = '/workspace/coding_tools/inkscape'
command = "#{inkscape} -o #{file.sub('.svg', '')}.png -w 1080 #{file}"
`#{command}`
endInkscape png>>jpg
<span class="hljs-constant">Dir</span>.glob(<span class="hljs-string">'*.png'</span>).each <span class="hljs-keyword">do</span> |file| puts <span class="hljs-string">"== processing file: <span class="hljs-subst">#{file}</span>"</span> command = <span class="hljs-string">"mogrify -format jpg <span class="hljs-subst">#{file}</span>"</span> <span class="hljs-string">`<span class="hljs-subst">#{command}</span>`</span> <span class="hljs-keyword">end</span>