(ruby)(RMagick)(ImageMagick)(既存の画像を ギザギザに縁取りし(シャドウ付き、ロール済みの)壁紙素材にするスクリプトを考えてみた)
おそらく もっと良い方法は 山ほどありそうだけど
現在の私の力では これが限界 笑)
影の具合などは
img_shadow = imglst.flatten_images.blur_channel(8, 5, Magick::AllChannels)
の blur_channelのパラメーターや
imglst[0] = imglst[0].composite(img_shadow.border(10, 10, 'white'), 0, 0, Magick::BumpmapCompositeOp)
の borderのパラメーターを 微調整してください
元画像
ソースは 「素材クラブ」さんのを利用させてもらいました → http://www.sozai-club.com/
変換後(ソースよりも縦横10px大きくなっています)
現在の私の力では これが限界 笑)
影の具合などは
img_shadow = imglst.flatten_images.blur_channel(8, 5, Magick::AllChannels)
の blur_channelのパラメーターや
imglst[0] = imglst[0].composite(img_shadow.border(10, 10, 'white'), 0, 0, Magick::BumpmapCompositeOp)
の borderのパラメーターを 微調整してください
require 'RMagick' # イメージのロード img = Magick::Image.read('<読み込む画像ファイル名>')[0] img.alpha = Magick::ActivateAlphaChannel # マスク(ギサギサの四角形)を作成 img_mask = Magick::Image.new(img.columns, img.rows){self.background_color = 'none'} Magick::Draw.new{ self.fill = 'white' }.rectangle(10, 10, img_mask.columns-10, img_mask.rows-10).draw(img_mask) img_mask = img_mask.spread(5).median_filter(3) # イメージを マスクに沿って切り抜く img = img.composite(img_mask, 0, 0, Magick::DstInCompositeOp) # シャドウを生成する imglst = Magick::ImageList.new() imglst[0] = Magick::Image.new(img.columns, img.rows){self.background_color = 'white'} imglst[1] = Magick::Image.new(img.columns, img.rows){self.background_color = '#303030'} imglst[1].alpha = Magick::ActivateAlphaChannel imglst[1] = imglst[1].composite(img_mask, 0, 0, Magick::DstInCompositeOp) img_shadow = imglst.flatten_images.blur_channel(8, 5, Magick::AllChannels) # 白の背景を作る imglst[0] = Magick::Image.new(img.columns+10, img.rows+10){self.background_color = 'white'} # 白の背景に 影を落とす imglst[0] = imglst[0].composite(img_shadow.border(10, 10, 'white'), 0, 0, Magick::BumpmapCompositeOp) # 先ほど切り抜いておいた画像を貼り付け imglst[1] = img # レイヤーを統合して ロールして ファイルに書き出す imglst.flatten_images.roll(100, 80).write('<書き出す画像ファイル名>') exit(0)
元画像
ソースは 「素材クラブ」さんのを利用させてもらいました → http://www.sozai-club.com/
変換後(ソースよりも縦横10px大きくなっています)