Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require 'RMagick'
- require 'FileUtils'
- require "benchmark"
- require "ap"
- $image_quality=100 #20
- $in_folder ="2.renamed/"
- $out_folder="3.result/"
- def CompareImage_v2(file1,file2,outname1,outname2)
- f1 = Magick::Image.read(file1).first
- f2 = Magick::Image.read(file2).first
- difference = f1.composite(f2, Magick::CenterGravity, Magick::DifferenceCompositeOp)
- # Make a blurry copy.
- blurry = difference.blur_image(0.0,4.5)
- mask = blurry.threshold(Magick::QuantumRange*0.02)
- mask2 = mask.edge(1)
- mask2 = mask2.level_colors("black", "red", true) # change blob color
- result=f1.composite(mask, Magick::CenterGravity, Magick::DifferenceCompositeOp)
- result=result.composite(mask2, Magick::CenterGravity, Magick::DifferenceCompositeOp)
- result.write(outname1) { self.quality = $image_quality }
- result=f2.composite(mask, Magick::CenterGravity, Magick::DifferenceCompositeOp)
- result=result.composite(mask2, Magick::CenterGravity, Magick::DifferenceCompositeOp)
- result.write(outname2) { self.quality = $image_quality }
- #memory leak fix
- GC.start #work !
- end
- def GetFullName(namestart)
- Dir.glob("#{namestart}*.*")
- end
- def doCompare2Lang(file_list,lang1,lang2)
- print "#{lang1} <=> #{lang2}|"
- dstdir="#{$out_folder}#{lang2}"
- FileUtils.mkdir("#{$out_folder}") unless File.directory?("#{$out_folder}")
- FileUtils.mkdir(dstdir) unless File.directory?(dstdir)
- file_list.each do |name|
- next if name =~ /^09\d\d/ #skip hand made
- f1="#{$in_folder}#{lang1}/#{name}"
- f2="#{$in_folder}#{lang2}/#{name}"
- short_name,name_tail=name.match(/^(\d+)\s*(.*)/)[1,2]
- f1_exist=File.exist?(f1)
- f2_exist=File.exist?(f2)
- if (f1_exist and f2_exist)
- name_tail.gsub!(/\.png/,"")
- fo1="#{dstdir}/z#{short_name}zzz #{name_tail}.png"
- fo2="#{dstdir}/z#{short_name}#{lang2} #{name_tail}.png"
- CompareImage_v2(f1,f2,fo1,fo2)
- print "."
- else
- print "{#{short_name}}" unless f1_exist
- print "[#{short_name}]" unless f2_exist
- end
- end
- puts "|"
- end
- lang_list=%w|dan dut eng fre ger ita nor pol spa swe|
- #get all unique names from all languages
- file_list=Array.new
- lang_list.each do |lang|
- lang_files=Dir.glob("#{$in_folder}#{lang}/*.png").map{ |n| File.basename(n)}
- file_list = file_list | lang_files
- end
- file_list.sort!
- time = Benchmark.measure do
- lang_list.each do |n|
- doCompare2Lang(file_list,"eng",n)
- end
- end
- puts time
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement