2009-11-09 5 views
14

Gute Freunde von stackoverflow, ich bin heute hier, um Sie bei der Bildverarbeitung/-manipulation mit Ruby in einer Rails-Umgebung zu unterstützen. Ich erstelle dynamische Werbebanner, die hauptsächlich (wenn nicht vollständig) Text enthalten. Es ist ziemlich einfach mit nur ein oder zwei Zeilen, aber ich möchte die Option, Schriftart, Textfarbe, Textgröße, etc. anpassen.Ruby/Rails Bildverarbeitungsbibliotheken

Welche Bibliotheken empfehlen Sie für diese Art von Aufgabe?

Ich habe in rMagick ein wenig gelesen und ich sehe eine Menge Beschwerden über Speicherprobleme und fehlende Text-Rendering-Funktionen. Ich sehe nicht viele alternative aktive Projekte.

Danke!

Bearbeiten: Ich hatte eine Chance, mit RMagick rumzualbern und während es Bibliothek ist voll ausgestattet, es fehlt ernsthaft in der Textabteilung. Eine Funktion, die ich nicht nutzen kann, sind nicht brechende Leerzeichen. Ich drucke eine Telefonnummer in meinem Text und es macht wirklich keinen Sinn, die Vorwahl auf einer anderen Linie als der Rest der Nummer zu haben.

Ich wähle RMagick als die beste Lösung für jetzt, weil es voll funktionsfähig und aktiv entwickelt ist, aber es ist auf keinen Fall eine gute Lösung.

+0

Ähnlich wie - http: // stackoverflow.com/questions/676159/create-static-graphics-files-png-gif-jpg-using-ruby-oder-python –

+0

Javid: Nein ist es nicht. –

Antwort

5

Ich schrieb etwas wie folgt aus:

require 'rubygems' 
require 'RMagick' 
include Magick 

image = Image.new(50, 50) { 
    self.background_color = "white" 
} 
text = Draw.new 
text.annotate(image, 0,0,0,40, 'Named Colors') { 
    self.fill = 'black' 
    self.pointsize = 32 
} 
image.write("image.png") 

Welche leicht genug sein sollte, folgen. Schauen Sie sich auch the documentation an. Es ist zwar nicht ganz perfekt angelegt, aber es ist so ziemlich alles da.

1

Die ImageScience Bibliothek ist für Leute gedacht, die rMagick's schlechte Speichernutzung hassen, etc. Ich benutze es als Backend-Prozessor für das attachment_fu Plugin, was es einfach macht, ein Image-Modell in Rails zu erstellen.

+3

Imagescience eignet sich besser zum Skalieren/Zuschneiden von Bildern, da es nicht so aussieht, wie er es gewünscht hätte. –

2

Sie können Ihre Bildverarbeitungsanforderungen in der Befehlszeilenversion von ImageMagick bereitstellen, anstatt die rMagick Ruby-Bindungen zu verwenden.

4

Kürzlich experimentierte ich mit der Erstellung von Diagrammen/Graphen aus Datensätzen mit Ruby. Als ich keine Bibliotheken oder Edelsteine ​​finden konnte, die wirklich das getan hatten, was ich wollte, habe ich angefangen, mit SVG-Grafiken herumzubasteln, und ich fand, dass sie ziemlich einfach zu erstellen sind. Das SVG-Format ist einfach Nur-Text-XML. Ich habe ein SVG-Bild in Inkscape erstellt, es in einer einfachen SVG-Datei gespeichert und mein Ruby-Skript verwendet diese Datei als Vorlage (ich aktualisiere dynamisch einige Zeilenelemente und mehrere Textbeschriftungen und belasse die Struktur der Datei intakt). SVG bietet Ihnen alle Arten von Schriftoptionen (wie CSS oder HTML).

Thesetwo Tutorials geben Ihnen einen schnellen Überblick über SVG und wie Sie schnell ein Bild mit jeder App oder Sprache erstellen können, die in eine Textdatei schreiben kann. Ruby kann die einfache puts verwenden, um eine SVG-Datei zu erstellen, oder Sie können den Builder 'builder' die Formatierung für Sie vornehmen lassen.

2

Sind Sie auf MRI Ruby beschränkt? Wenn es irgendeinen Weg gibt, auf eine jRuby-Instanz zuzugreifen (vielleicht auf einem EC2-Stack zum Beispiel), könnten Sie die wundervolle Bibliothek Processing nutzen. Ein Projekt, an dem ich zuvor gearbeitet habe, hat etwas Ähnliches mit Processing über jRuby gemacht, es ist wirklich eine potente Kombination.