{"id":508,"date":"2010-11-20T22:48:25","date_gmt":"2010-11-20T15:48:25","guid":{"rendered":"http:\/\/ibatt.info\/web\/?p=508"},"modified":"2010-11-20T22:48:25","modified_gmt":"2010-11-20T15:48:25","slug":"ror-draw-image-by-rmagick","status":"publish","type":"post","link":"http:\/\/ibatt.info\/web\/?p=508","title":{"rendered":"ROR Draw image by RMagick"},"content":{"rendered":"<p>require &#8216;RMagick&#8217;<br \/>\ninclude Magick<\/p>\n<p>&#8230;<br \/>\nresult = Magick::Image.new(1000, 725){ self.background_color = &#8216;#FFFFFF&#8217; }<br \/>\nwatermark = Magick::Image.read(&#8220;#{RAILS_ROOT}\/public\/logo\/watermark.png&#8221;).first<br \/>\nlogo = Magick::Image.read(&#8220;#{RAILS_ROOT}\/public\/logo\/logo_xxx.png&#8221;).first<br \/>\nsignature1 = Magick::Image.read(&#8220;#{RAILS_ROOT}\/public\/logo\/sig1.png&#8221;).first<br \/>\nsignature2 = Magick::Image.read(&#8220;#{RAILS_ROOT}\/public\/logo\/sig2.png&#8221;).first<br \/>\nstudent_img = Magick::Image.read(&#8220;#{RAILS_ROOT}\/public\/images\/gui\/user_90x90.png&#8221;).first<br \/>\nresult = result.composite(watermark, Magick::CenterGravity, 0, 0, Magick::OverCompositeOp)<br \/>\nresult = result.composite(logo, Magick::NorthGravity, 0, 20, Magick::OverCompositeOp)<br \/>\nresult = result.composite(signature1, Magick::NorthGravity, -250, 600, Magick::OverCompositeOp)<br \/>\nresult = result.composite(signature2, Magick::NorthGravity, 250, 600, Magick::OverCompositeOp)<br \/>\nresult = result.composite(student_img, Magick::NorthGravity, 345, 50, Magick::OverCompositeOp)<\/p>\n<p>line1 = Draw.new<br \/>\nresult.annotate(line1, 1000,30, 0, 200, &#8220;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&#8221;){<br \/>\nline1.font = &#8220;#{RAILS_ROOT}\/public\/fonts\/TH_Niramit_AS_Bold.ttf&#8221;<br \/>\nline1.gravity = Magick::NorthGravity<br \/>\nline1.pointsize = 18<br \/>\nline1.fill = &#8220;#000000&#8221;<br \/>\nline1.font_weight = Magick::BoldWeight<br \/>\n}<\/p>\n<p>line2 = Draw.new<br \/>\nresult.annotate(line2, 1000,30, 0, 240, &#8220;\u0e27\u0e38\u0e12\u0e34\u0e1a\u0e31\u0e15\u0e23\u0e09\u0e1a\u0e31\u0e1a\u0e19\u0e35\u0e49\u0e43\u0e2b\u0e49\u0e44\u0e27\u0e49\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e41\u0e2a\u0e14\u0e07\u0e27\u0e48\u0e32&#8221;){<br \/>\nline2.font = &#8220;#{RAILS_ROOT}\/public\/fonts\/TH_Niramit_AS_Bold.ttf&#8221;<br \/>\nline2.gravity = Magick::NorthGravity<br \/>\nline2.pointsize = 18<br \/>\nline2.fill = &#8220;#000000&#8221;<br \/>\nline2.font_weight = Magick::BoldWeight<br \/>\n}<\/p>\n<p>student_name = Draw.new<br \/>\nresult.annotate(student_name, 1000,30, 0, 280, &#8220;#{courses_student.prefix} #{courses_student.firstname}? #{courses_student.lastname}&#8221;){<br \/>\nstudent_name.font = &#8220;#{RAILS_ROOT}\/public\/fonts\/TH_Niramit_AS_Bold.ttf&#8221;<br \/>\nstudent_name.gravity = Magick::NorthGravity<br \/>\nstudent_name.pointsize = 18<br \/>\nstudent_name.fill = &#8220;#000000&#8221;<br \/>\nstudent_name.font_weight = Magick::BoldWeight<br \/>\n}<\/p>\n<p>detail = Draw.new<br \/>\nresult.annotate(detail, 1000,30, 0, 340, &#8220;\u0e44\u0e14\u0e49\u0e40\u0e02\u0e49\u0e32\u0e1d\u0e36\u0e01\u0e2d\u0e1a\u0e23\u0e21 #{certificate_template.detail}&#8221;){<br \/>\ndetail.font = &#8220;#{RAILS_ROOT}\/public\/fonts\/TH_Niramit_AS_Bold.ttf&#8221;<br \/>\ndetail.gravity = Magick::NorthGravity<br \/>\ndetail.pointsize = 18<br \/>\ndetail.fill = &#8220;#000000&#8221;<br \/>\ndetail.font_weight = Magick::BoldWeight<br \/>\n}<\/p>\n<p>if courses_student.is_certified<br \/>\ndetail2 = Draw.new<br \/>\nresult.annotate(detail, 1000,30, 0, 370, &#8220;\u0e41\u0e25\u0e30\u0e1c\u0e48\u0e32\u0e19\u0e40\u0e01\u0e13\u0e11\u0e4c\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e30\u0e40\u0e21\u0e34\u0e19\u0e1c\u0e25\u0e2a\u0e31\u0e21\u0e24\u0e17\u0e18\u0e34\u0e4c\u0e01\u0e32\u0e23\u0e2d\u0e1a\u0e23\u0e21&#8221;){<br \/>\ndetail2.font = &#8220;#{RAILS_ROOT}\/public\/fonts\/TH_Niramit_AS_Bold.ttf&#8221;<br \/>\ndetail2.gravity = Magick::NorthGravity<br \/>\ndetail2.pointsize = 18<br \/>\ndetail2.fill = &#8220;#000000&#8221;<br \/>\ndetail2.font_weight = Magick::BoldWeight<br \/>\n}<br \/>\nend<\/p>\n<p>line3 = Draw.new<br \/>\nresult.annotate(line3, 1000,30, 0, 4100, &#8220;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&#8221;){<br \/>\nline3.font = &#8220;#{RAILS_ROOT}\/public\/fonts\/TH_Niramit_AS_Bold.ttf&#8221;<br \/>\nline3.gravity = Magick::NorthGravity<br \/>\nline3.pointsize = 18<br \/>\nline3.fill = &#8220;#000000&#8221;<br \/>\nline3.font_weight = Magick::BoldWeight<br \/>\n}<\/p>\n<p>line4 = Draw.new<br \/>\nresult.annotate(line4, 1000,30, 0, 440, &#8220;xxxxxxxxxxxxxxxxxxxxx&#8221;){<br \/>\nline4.font = &#8220;#{RAILS_ROOT}\/public\/fonts\/TH_Niramit_AS_Bold.ttf&#8221;<br \/>\nline4.gravity = Magick::NorthGravity<br \/>\nline4.pointsize = 18<br \/>\nline4.fill = &#8220;#000000&#8221;<br \/>\nline4.font_weight = Magick::BoldWeight<br \/>\n}<\/p>\n<p>line5 = Draw.new<br \/>\nresult.annotate(line5, 1000,30, 0, 470, &#8220;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx &#8220;){<br \/>\nline5.font = &#8220;#{RAILS_ROOT}\/public\/fonts\/TH_Niramit_AS_Bold.ttf&#8221;<br \/>\nline5.gravity = Magick::NorthGravity<br \/>\nline5.pointsize = 18<br \/>\nline5.fill = &#8220;#000000&#8221;<br \/>\nline5.font_weight = Magick::BoldWeight<br \/>\n}<\/p>\n<p>line6 = Draw.new<br \/>\nresult.annotate(line6, 1000,30, 0, 500, &#8220;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&#8221;){<br \/>\nline6.font = &#8220;#{RAILS_ROOT}\/public\/fonts\/TH_Niramit_AS_Bold.ttf&#8221;<br \/>\nline6.gravity = Magick::NorthGravity<br \/>\nline6.pointsize = 18<br \/>\nline6.fill = &#8220;#000000&#8221;<br \/>\nline6.font_weight = Magick::BoldWeight<br \/>\n}<\/p>\n<p>thai_mon = [&#8220;&#8221;, &#8220;\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21&#8221;, &#8220;\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c&#8221;, &#8220;\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21&#8221;, &#8220;\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19&#8221;, &#8220;\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21&#8221; &#8220;\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19&#8221;, &#8220;\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21&#8221;, &#8220;\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21&#8221;, &#8220;\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19&#8221;, &#8220;\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21&#8221;, &#8220;\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19&#8221;, &#8220;\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21&#8221;]<br \/>\ndate = Draw.new<br \/>\nresult.annotate(date, 1000,30, 0, 540, &#8220;\u0e43\u0e2b\u0e49\u0e44\u0e27\u0e49 \u0e13 \u0e27\u0e31\u0e19\u0e17\u0e35\u0e48 #{Date.today.day} \u0e40\u0e14\u0e37\u0e2d\u0e19 #{thai_mon[Date.today.mon]} \u0e1e.\u0e28. #{Date.today.year + 543}&#8221;){<br \/>\ndate.font = &#8220;#{RAILS_ROOT}\/public\/fonts\/TH_Niramit_AS_Bold.ttf&#8221;<br \/>\ndate.gravity = Magick::NorthGravity<br \/>\ndate.pointsize = 18<br \/>\ndate.fill = &#8220;#000000&#8221;<br \/>\ndate.font_weight = Magick::BoldWeight<br \/>\n}<\/p>\n<p>sig2_name = Draw.new<br \/>\nresult.annotate(line6, 1000,30, 250, 668, &#8220;(xxxxxxxxxxxxxxxxxxxxxxxxxxxxx)&#8221;){<br \/>\nsig2_name.font = &#8220;#{RAILS_ROOT}\/public\/fonts\/TH_Niramit_AS_Bold.ttf&#8221;<br \/>\nsig2_name.gravity = Magick::NorthGravity<br \/>\nsig2_name.pointsize = 18<br \/>\nsig2_name.fill = &#8220;#000000&#8221;<br \/>\nsig2_name.font_weight = Magick::BoldWeight<br \/>\n}<\/p>\n<p>sig2_desc = Draw.new<br \/>\nresult.annotate(line6, 1000,30, 250, 688, &#8220;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&#8221;){<br \/>\nsig2_desc.font = &#8220;#{RAILS_ROOT}\/public\/fonts\/TH_Niramit_AS_Bold.ttf&#8221;<br \/>\nsig2_desc.gravity = Magick::NorthGravity<br \/>\nsig2_desc.pointsize = 18<br \/>\nsig2_desc.fill = &#8220;#000000&#8221;<br \/>\nsig2_desc.font_weight = Magick::BoldWeight<br \/>\n}<\/p>\n<p>filename = &#8220;#{directory}\/cert_#{@course.id}_#{courses_student.student_id}_#{courses_student.student_id}.jpg&#8221;<br \/>\nresult.write(filename)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>require &#8216;RMagick&#8217; include Magick &#8230; result = Magick::Image.new(1000, 725){ self.background_color = &#8216;#FFFFFF&#8217; } watermark = Magick::Image.read(&#8220;#{RAILS_ROOT}\/public\/logo\/watermark.png&#8221;).first logo = Magick::Image.read(&#8220;#{RAILS_ROOT}\/public\/logo\/logo_xxx.png&#8221;).first signature1 = Magick::Image.read(&#8220;#{RAILS_ROOT}\/public\/logo\/sig1.png&#8221;).first signature2 = Magick::Image.read(&#8220;#{RAILS_ROOT}\/public\/logo\/sig2.png&#8221;).first student_img = Magick::Image.read(&#8220;#{RAILS_ROOT}\/public\/images\/gui\/user_90x90.png&#8221;).first result = result.composite(watermark, Magick::CenterGravity, 0, 0, Magick::OverCompositeOp) result = result.composite(logo, Magick::NorthGravity, 0, 20, Magick::OverCompositeOp) result = result.composite(signature1, Magick::NorthGravity, -250, 600, Magick::OverCompositeOp) result = result.composite(signature2, Magick::NorthGravity, 250, 600, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[82,8,27,117],"_links":{"self":[{"href":"http:\/\/ibatt.info\/web\/index.php?rest_route=\/wp\/v2\/posts\/508"}],"collection":[{"href":"http:\/\/ibatt.info\/web\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/ibatt.info\/web\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/ibatt.info\/web\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/ibatt.info\/web\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=508"}],"version-history":[{"count":1,"href":"http:\/\/ibatt.info\/web\/index.php?rest_route=\/wp\/v2\/posts\/508\/revisions"}],"predecessor-version":[{"id":509,"href":"http:\/\/ibatt.info\/web\/index.php?rest_route=\/wp\/v2\/posts\/508\/revisions\/509"}],"wp:attachment":[{"href":"http:\/\/ibatt.info\/web\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=508"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/ibatt.info\/web\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=508"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/ibatt.info\/web\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=508"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}