2016-07-17 13 views
1

Ich habe ein Bild (so: mask) und zwei Ganzzahlen, die eine endgültige Bildbreite & Höhe darstellt. Nach Wands Dokumentation Open empty image:Füllen Sie ein Bild mit vordefinierten Muster mit Wand

with Image(width=200, height=100) as img: 
    img.save(filename='200x100-transparent.png') 

Es wird mit transparentem Hintergrund in einem leeren Bild führen. Nun ist die Frage: Wie erstellt man ein leeres Bild, aber mit Maske Bild als Hintergrundmuster?

Der composite CLI-Befehl selbst hat einen folgenden Betreiber:

-tile repeat composite operation across and down image

Aber wie das gleiche mit Wand zu erreichen?

Antwort

2

Nun, nach einem Blick auf ImageMagicks Composite-source code selbst, wurden klar, dass die Wand-basierte Lösung aussehen soll:

with Image(width=x, height=y) as img: 
    for x in xrange(0, img.width, crop_mask_path.width): 
     for y in xrange(0, img.height, crop_mask_path.height): 
      img.composite_channel('default_channels', crop_mask_path, 'over', x, y) 
    img.save(filename='patterned_image.png') 
0

Gebäude aus dem Titel Iterator ist the best solution meiner Meinung nach. Eine andere hackish Methode wäre jedoch, das Protokoll tile: aufzurufen und die internen ImageMagick-Methoden Composites zu ermöglichen. Sie verlieren die Kontrolle, die Sie von Heimwerkern geerbt haben, können aber auf optimierten IM-Systemen etwas Leistung erzielen.

from wand.image import Image 
from wand.api import library 

with Image() as img: 
    # Same as `-size 400x400' needed by tile: protocol. 
    library.MagickSetOption(img.wand, 'size', '400x400') 
    # Prefix filename with `tile:' protocol. 
    img.read(filename='tile:rose.png') 
    img.save(filename='tile_rose.png') 

pre defined pattern with wand

+0

Sieht aus wie Magie. Ich werde es versuchen. Vielen Dank! –

Verwandte Themen