2016-10-22 2 views
3

Hallo Ich möchte einige Bilder mit abgerundeten Ecken konvertieren. Ich fand, wie dies mit ImageMagick auf ihrer WebsiteRunde Bild Ecken GM ImageMagic, Pass Optionen

convert thumbnail.gif \ 
    \(+clone -crop 16x16+0+0 -fill white -colorize 100% \ 
     -draw 'fill black circle 15,15 15,0' \ 
     -background Red -alpha shape \ 
     \(+clone -flip \) \(+clone -flop \) \(+clone -flip \) \ 
    \) -flatten rounded_corners_red.png 

http://www.imagemagick.org/Usage/thumbnails/#rounded das Problem getan wird, ist, dass ich weiß nicht, wie all diese Optionen in GM zu übergeben. Ich habe versucht mit

gm.in("\(+clone -crop 16x16+0+0 -fill white -colorize 100% 
      -draw 'fill black circle 15,15 15,0' 
      -background Red -alpha shape 
      \(+clone -flip \) \(+clone -flop \) \(+clone -flip \) 
     \) -flatten") 

aber es funktioniert nicht. Und das ist, wie ich meine Bilder der Größe

var gm = require("gm").subClass({ imageMagick: true }) 
var _ = require("lodash") 
var images = ['1b.jpg', '2b.jpg', '3b.jpg'] 

_.forEach(images, function(image, key) { 

    var img = gm(__dirname + '/' + image) 
    var dest = __dirname + '/' + key+'.jpg' 
    img.resize('100', '100', '^') 
    img.gravity('Center') 
    img.crop('100', '100') 

    img.in("\(+clone -crop 16x16+0+0 -fill white -colorize 100% 
      -draw 'fill black circle 15,15 15,0' 
      -background Red -alpha shape 
      \(+clone -flip \) \(+clone -flop \) \(+clone -flip \) 
     \) -flatten") 

    img.write(__dirname + '/' + key+'.jpg', function (err) { 
    if (!err) console.log(' image done! '); 
    }) 

}) 
+0

Haben Sie rot oder transparent Ecken wollen? Sind Ihre Bilder, die Sie verwenden möchten, abgerundete Ecken in etwa gleicher Größe - und wenn ja, welche Größe? –

+0

Also was ich versuche, ist diesen Prozess zu automatisieren, also ist die Größe des Bildes in diesem Beispiel 100x100, kann aber irgendwann anders sein. Das Bild wurde verkleinert und verkleinert, wie Sie im obigen Beispiel sehen können. Danach möchte ich es mit abgerundeten Ecken machen. Über den Hintergrund möchte ich transparent sein, aber wenn nicht möglich wäre jede Farbe in Ordnung – Alex

Antwort

1

Ich glaube nicht, GraphicsMagick unterstützt Klammern und das scheint eine sehr komplizierte Art und Weise, Dinge zu tun. Ich denke, ich würde eine Alpha-Maske machen, die zeigt, wo ich möchte, dass das Bild opak/transparent und kopieren Sie das in das Bild.

Also konkret:

convert -size 100x100 xc:none -draw "roundrectangle 0,0,99,99,12,12" mask.png 

enter image description here

convert -size 100x100 gradient:blue-yellow mask.png -compose copyopacity -composite result.png 

enter image description here

Beachten Sie auch, dass Sie nicht in der Lage sein wird, da JPEG transparente Ecken in einer JPEG-Ausgabedatei zu speichern unterstützt keine Transparenz.

Wenn Sie rote Ecken wollten, könnten Sie tun:

convert -size 100x100 xc:red -draw "roundrectangle 0,0,99,99,12,12" -transparent black mask.png 
convert -size 100x100 gradient:blue-yellow mask.png -composite result.png 

enter image description here

+0

Neueste Versionen von ImageMagick unterstützen Klammern. Siehe http://www.imagemagick.org/Usage/basics/#parenthesis –

+0

@JonAdams Ich bezog mich auf ** GraphicsMagick ** nicht unterstützt Klammern. –

+0

Ich weiß nicht über GraphicMagick, aber der OP fragte nach _ImageMagick_, nicht GM. Mein Punkt war, dass Ops ursprüngliche Lösung, die Klammern verwendet, theoretisch noch funktionieren könnte ... Ihre Antwort ist ein wenig verwirrend, indem Sie zu GM wechseln, das sehr ähnlich, aber nicht genau dasselbe ist. Ich versuche nicht zu sagen, dass du falsch liegst oder nicht (ich bin kein Experte in beiden Tools) - Ich versuche nur, für zukünftige Nutzer zu klären, die die Unterschiede zwischen GM und IM vielleicht nicht kennen. (Und mich selbst zu erinnern, weil ich die Unterschiede auch verwirrend finde.) –

Verwandte Themen