2017-10-24 4 views
1

Ich versuche magick zu verwenden, um ein animiertes Gif aus einer Reihe von Bildern zu erstellen. Es funktioniert gut, aber ich wollte Text (im Grunde der Dateiname) zu jedem Bild annotieren, bevor Sie das gif erstellen - und das funktioniert nicht.r Rohrleitung Image_annotate funktioniert nicht wie erwartet

Ich kann die Ursache des Fehlers (unten) nicht finden - nicht sicher, ob es die Rohrleitungsnotation, die Kartenfunktion oder etwas anderes ist.

library(purrr) 
library(magick) 

#set working directory with a couple of png's 
#This works: 
image_read("image1.png") %>% image_annotate("Text")  

#and this works too: 
list.files(path = "", pattern = "*.png", full.names = T) %>% 
     map(image_read) %>% 
     image_join() %>% 
     image_animate(fps=1) %>% 
     image_write("animated.gif") 

#but this doesn't: 
list.files(path = "", pattern = "*.png", full.names = T) %>% 
     map(image_read) %>% 
     map(image_annotate("Text")) %>% 
     image_join() %>% 
     image_animate(fps=1) %>% 
     image_write("animated.gif") 

ich diesen Fehler: Error in inherits(image, "magick-image") : argument "image" is missing, with no default

Antwort

1

Es sieht für mich, als ob der Fehler in nisten Ihre Karte sein könnte.

Da Sie bereits während image_read zugeordnet haben, ist es nicht notwendig, es wieder zu tun für image_annotate,

bearbeiten Also brauchen wir die Funktion image_annotate auf jedes Element in der Liste nach dem abgebildeten image_read zurück anwenden . Versuchen Sie ersetzen map(image_annotate("Text") %>% mit:

lapply(image_annotate("Text")) %>% 

oder

lapply(. %>% image_annotate("Text")) %>% 

Reference for lapply()

+1

Ich dachte, so - aber ich habe den Fehler: 'Fehler: Die 'Bild' Argument Objekt kein Magick Bild ist. ' –

+1

aah ja, ich habe einen Schritt verpasst, habe meine Antwort bearbeitet, lass es mich wissen, wenn es funktioniert :) –

+0

Danke - das erste hat nicht funktioniert, aber die zweite hat den Job! Gibt es eine Möglichkeit, den Dateinamen anstelle von "Text" zu kommentieren? –

Verwandte Themen