Advertisement
Guest User

Untitled

a guest
Mar 29th, 2012
328
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 2.38 KB | None | 0 0
  1. require 'RMagick'
  2. require 'FileUtils'
  3. require "benchmark"
  4. require "ap"
  5.  
  6. $image_quality=100 #20
  7.  
  8. $in_folder ="2.renamed/"
  9. $out_folder="3.result/"
  10.  
  11.  
  12. def CompareImage_v2(file1,file2,outname1,outname2)
  13.     f1 = Magick::Image.read(file1).first
  14.     f2 = Magick::Image.read(file2).first
  15.  
  16.     difference = f1.composite(f2, Magick::CenterGravity, Magick::DifferenceCompositeOp)
  17.  
  18.     # Make a blurry copy.
  19.     blurry = difference.blur_image(0.0,4.5)
  20.  
  21.     mask = blurry.threshold(Magick::QuantumRange*0.02)
  22.     mask2 = mask.edge(1)
  23.     mask2 = mask2.level_colors("black", "red", true) # change blob color
  24.  
  25.     result=f1.composite(mask, Magick::CenterGravity, Magick::DifferenceCompositeOp)
  26.     result=result.composite(mask2, Magick::CenterGravity, Magick::DifferenceCompositeOp)
  27.     result.write(outname1) { self.quality = $image_quality }
  28.  
  29.     result=f2.composite(mask, Magick::CenterGravity, Magick::DifferenceCompositeOp)
  30.     result=result.composite(mask2, Magick::CenterGravity, Magick::DifferenceCompositeOp)
  31.     result.write(outname2) { self.quality = $image_quality }
  32.  
  33.     #memory leak fix
  34.     GC.start #work !
  35. end
  36.  
  37.  
  38.  
  39. def GetFullName(namestart)
  40.     Dir.glob("#{namestart}*.*")
  41. end
  42.  
  43. def doCompare2Lang(file_list,lang1,lang2)
  44.  
  45.     print "#{lang1} <=> #{lang2}|"
  46.  
  47.     dstdir="#{$out_folder}#{lang2}"
  48.     FileUtils.mkdir("#{$out_folder}") unless File.directory?("#{$out_folder}")
  49.     FileUtils.mkdir(dstdir) unless File.directory?(dstdir)
  50.  
  51.     file_list.each do |name|
  52.         next if name =~ /^09\d\d/ #skip hand made
  53.  
  54.         f1="#{$in_folder}#{lang1}/#{name}"
  55.         f2="#{$in_folder}#{lang2}/#{name}"
  56.  
  57.         short_name,name_tail=name.match(/^(\d+)\s*(.*)/)[1,2]
  58.         f1_exist=File.exist?(f1)
  59.         f2_exist=File.exist?(f2)
  60.         if (f1_exist and f2_exist)
  61.             name_tail.gsub!(/\.png/,"")
  62.             fo1="#{dstdir}/z#{short_name}zzz #{name_tail}.png"
  63.             fo2="#{dstdir}/z#{short_name}#{lang2} #{name_tail}.png"
  64.             CompareImage_v2(f1,f2,fo1,fo2)
  65.             print "."
  66.         else
  67.             print "{#{short_name}}" unless f1_exist
  68.             print "[#{short_name}]" unless f2_exist
  69.         end
  70.  
  71.     end
  72.     puts "|"
  73. end
  74.  
  75. lang_list=%w|dan dut eng fre ger ita nor pol spa swe|
  76.  
  77. #get all unique names from all languages
  78. file_list=Array.new
  79. lang_list.each do |lang|
  80.     lang_files=Dir.glob("#{$in_folder}#{lang}/*.png").map{ |n| File.basename(n)}
  81.     file_list = file_list | lang_files
  82. end
  83. file_list.sort!
  84.  
  85. time = Benchmark.measure do
  86.  lang_list.each do |n|
  87.      doCompare2Lang(file_list,"eng",n)
  88.  end
  89. end
  90. puts time
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement