Как я могу использовать пакет magick в R, чтобы добавить перо по краю изображения? - PullRequest
0 голосов
/ 22 мая 2019

У меня есть gif-файл, который я читаю в R с помощью пакета magick, и я хочу размыть или добавить эффект растушевки к краям изображения каждого кадра. Я вижу, что это возможно в ImageMagick из документации (например, https://www.imagemagick.org/Usage/morphology/#distance_feather и https://www.imagemagick.org/Usage/transform/#vignette), но не могу понять, как перевести эту информацию в R. Какие магические функции и параметры я нужно использовать, чтобы это произошло?

Я знаю, что мне нужно будет работать с каждым кадром GIF отдельно, например,:

img <- image_read("myGif.gif")

featheredGif <- _____ # ????insert a function to feather edges, applied to img[1]

for(i in 2:length(img)){
  featheredFrame <- _____ # ???? insert function to feather edges, applied to img[i]
  featheredGif <- c(featheredGif, featheredFrame)
}

Я хочу, чтобы результат выглядел примерно так: https://www.imagemagick.org/Usage/thumbnails/soft_edge.png или https://www.imagemagick.org/Usage/morphology/rose_feathered.png,, хотя он применяется к каждому кадру в gif.

1 Ответ

0 голосов
/ 22 мая 2019

Извините, но я не знаю RMagick или R. Но вот команды ImageMagick CLI для рисования эллиптических и круглых прямоугольников.

Ввод:

enter image description here

Овал:

Read the image
Clone it and use -vignette to draw an ellipse and extract the alpha channel, blur it, then apply -level
Then put the result into the alpha channel of the input image

convert thumbnail.gif \
\( -clone 0 -background none -virtual-pixel none -vignette 0x0+0+0 \
-alpha extract -blur 0x10 -level 50x100% \) \
-alpha off -compose copyopacity -composite \
result.png


enter image description here

Круглый прямоугольник:

Read the input image and get the bottom right corner coordinate   
Read it again. 
Clone it, fill it with black, draw a round rectangle, blur it, apply -level
Then put the result into the alpha channel of the input image

wm1=`convert thumbnail.gif -format "%[fx:w-1]" info:`
hm1=`convert thumbnail.gif -format "%[fx:h-1]" info:`
convert thumbnail.gif \
\( -clone 0 -fill black -colorize 100 \
-fill white -virtual-pixel black -draw "roundrectangle 0,0 $wm1,$hm1 15,15" \
-blur 0x10 -level 50x100% \) \
-alpha off -compose CopyOpacity -composite \
result2.png


enter image description here

Итак, вам нужны RMagick-эквиваленты -vignette, -composite, -draw, -blur и -level.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...