Wie Konfiguriere ich eine JPEG-Delegierter für graphicsmagick?
Ich möchte um ein Bild zu beschneiden, um eine angegebene pixel region. Ich würde gerne die gm
Modul aus https://github.com/aheckmann/gm.
Ich arbeite mit Linux Mint 13 und node.js v0.9.4 pre.
Läuft bei mir in einen Fehler, der klingt wie graphicsmagick weiß nicht, über jpegs:
Error: Command failed: gm convert: No decode delegate for this image format (./assets/images/temp/2aadd4379e1cf2b59429994270db2a8a.jpg)
Sicher genug, gm convert -list formats
zeigt keine jpeg-Delegierter:
<snip>
IPTC P rw- IPTC Newsphoto
IPTCTEXT P rw- IPTC Newsphoto text format
IPTCWTEXT P rw- IPTC Newsphoto text format
K25 S r-- Kodak Photo RAW
<snip>
graphicsmagick ist ein ftp-Ordner mit Quellcode für die Delegierten (mit einem readme.) So ich heruntergeladen habe, nicht asphaltiert, und installiert jpegsrc.v6b.tar.gz
wie vorgeschlagen, in die sowohl das install-Dokument, das kam mit meiner Quelle-Dateien.
Ich bin mir ziemlich sicher, dass die jpeg-Bibliothek installiert cjpeg
und djpeg
- und vielleicht auch andere Sachen. Allerdings gibt es keine make uninstall
oder manifest, das ich gefunden. Ich habe nicht versucht, die Installation von anderen Versionen der jpeg-Bibliothek über diese. Ich habe deinstalliert und neu aufgebaut graphicsmagick nach der Installation der jpeg-Bibliothek.
Immer noch, es gibt keine JPEG delegieren aufgelistet in gm convert -list formats
.
Ich bin der Migration von Imagemagick, welche hatte nie irgendwelche Probleme Größenänderung von jpegs, auch ohne meine Installation dieser Bibliothek.
Was muss ich tun, um graphicsmagic zu handhaben jpegs?
Hier ist, wie ich bin aufrufen gm:
var gmagic = require('gm');
gmagic(cfg.tmpPath)
.crop(h,w,x0,y0)
.write(cfg.croppedPath, function(err){
if(err){ done(err) }
else { done(null, cfg.croppedPath) };
});
Hier sind die Befehle, die ich verwendet, um installieren Sie die jpeg-Bibliothek und graphicsmagick:
$ cd ~/source
$ wget http://www.ijg.org/files/jpegsrc.v6b.tar.gz
$ tar -xzvf jpegsrc.v6b.tar.gz
$ cd jpeg-6b
$ ./configure
$ make
$ sudo make install
$ cd ~/source
$ wget ftp://ftp.graphicsmagick.org/pub/GraphicsMagick/1.3/GraphicsMagick-1.3.18.tar.xz
$ tar -xJvf GraphicsMagick-1.3.18.tar.xz
$ cd GraphicsMagick-1.3.18
$ ./configure
$ make
$ sudo make install
$ npm install gm
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand ich eine erfolgreiche Abhilfe, indem er die gm-Bibliothek zu verwenden imagemagick binaries statt Standard-graphicsmagic binaries:
Gegeben, dass Sie mit Linux Mint die beste Lösung für GraphicsMagick zu finden, libjpeg zu installieren, die die libjpeg-Entwicklung-Paket (libjpeg-dev), re-run der GraphicsMagick configure-Skript, neu erstellen und installieren. Werden Sie sicher, dass Sie -dev-Pakete für Bibliotheken Unterstützung von anderen Formaten, die Sie interessiert sind in.
Wenn Sie möchten, verwenden Sie die libjpeg installiert aus dem source code, dann müssen Sie die Optionen LDFLAGS=-L/usr/local/lib CPPFLAGS=-I/usr/local/include zu den GraphicsMagick-configure-script-Aufruf. Sich bewusst sein, dass Linux Mint kann kommen mit eine andere libjpeg als jpeg-6b (z.B. jpeg 8 oder libjpeg-turbo) und es ist am besten, nicht zu haben, duplizieren Sie die Bibliotheken auf dem system.
Ich weiß, dass es ausschließlich um eine Linux-Frage, aber vielleicht hilft es jemand...
Auf dem Mac, die ich verwendet, HomeBrew statt. Führen Sie einfach diese 3 Zeilen (die
chown
Linie war für mich notwendig, möchten Sie vielleicht zu versuchen, ohne zuerst):Wenn er beschwert sich über die jpeg-libraries werden aufgehoben, führen
brew doctor
+ Folgen Sie den Anweisungen zum verknüpfen fehlt "kegs".Und wenn etwas Durcheinander gebracht, und Sie beginnen möchten (siehe https://stackoverflow.com/a/17846596/188926):