Kurz gesagt
- Ein Image-Datenblock repräsentiert Bilddaten, die aus einer Datei geladen, gepackt oder erstellt wurden.
- Nach Änderungen am Pixelpuffer können Sie das Bild mit update() aktualisieren.
- Nicht gespeicherte Pufferänderungen werden beim Kopieren eines Image-Datenblocks möglicherweise nicht übernommen.
- ImageTexture bietet Einstellungen für Wiederholung, Beschneiden, Alpha und das Verhalten außerhalb der Bildgrenzen.
Was Sie in diesem Leitfaden lernen
Sie erfahren, wie Sie mit der Blender Python API einen Image-Datenblock erstellen, den Bildpuffer skalieren und Pixelwerte ändern. Außerdem sehen wir uns an, welche Rolle der Aufruf von update() dabei spielt, Änderungen im Bild anzuzeigen, und worauf Sie beim Kopieren eines Image-Datenblocks im Zusammenhang mit dem Puffer achten sollten. Im letzten Abschnitt geht es um den Zusammenhang zwischen den ImageTexture-Optionen, der Texturwiederholung, Alpha und den Bildgrenzen.
Dieser Leitfaden richtet sich an Teams für Architekturvisualisierung und Blender-Anwender, die Bilddaten per Skript vorbereiten oder das Texturverhalten gezielter untersuchen möchten. Die Beispiele beschränken sich auf die in der API-Dokumentation beschriebenen Funktionen; Schritte zur Materialzuweisung oder zum Aufbau eines Knotennetzwerks sind nicht Teil des Umfangs.
Voraussetzungen
Sie benötigen Zugriff auf die Python API in Blender. Als Quellen dienen die aktuellen API-Dokumente von Blender; welche Blender-Mindestversion für die beschriebenen Funktionen erforderlich ist, wird auf diesen Seiten nicht angegeben.
Die Codebeispiele verwenden das Modul
bpyin der Blender-Python-Umgebung. Die Quellen nennen keine Anforderungen an externe Konten.Die API-Dokumentation macht für diese Funktionen keine Angaben zu Hardwareanforderungen, Gebühren oder Lizenzkosten. Gehen Sie in diesen Punkten nicht von bestimmten Voraussetzungen aus, sondern prüfen Sie die verwendete Version und Arbeitsumgebung gesondert.
Schritt für Schritt mit einem Image-Datenblock arbeiten
1. Einen Bilddatenblock erstellen
Mit bpy.data.images.new() können Sie einen neuen Image-Datenblock erstellen. Das folgende Beispiel verwendet die im Ausgangsdokument angegebene Anfangsgröße. Über die Eigenschaft size lassen sich Breite und Höhe des Bildpuffers in Pixeln auslesen.
import bpy
image_src = bpy.data.images.new("Mimari_Kontrol", 1024, 102)
print(image_src.size)Ein Image-Datenblock sollte nicht als Speicherort sämtlicher Bilddaten verstanden werden. Laut Dokumentation werden Informationen wie der Pixelpuffer und die Größe in einem Bildpuffer gespeichert; der Image-Datenblock verweist dagegen auf eine Bilddatei oder ein erstelltes Bild. Diese Unterscheidung ist besonders wichtig, wenn Sie den Puffer bearbeiten und anschließend den Datenblock kopieren.
2. Den Puffer skalieren und die Änderung im Bild anzeigen
Mit scale() ändern Sie die Größe des Bildpuffers. Die Eigenschaft pixels bietet Zugriff auf den aus Gleitkommawerten bestehenden Pixelpuffer. Das folgende Beispiel skaliert das Bild auf 1024 × 720, ändert die ersten vier Werte des Puffers und aktualisiert anschließend das Bild.
image_src.scale(1024, 720)
image_src.pixels[0:4] = (0.5, 0.5, 0.5, 0.5)
image_src.update()
print(image_src.size)
print(image_src.pixels[0:4])Dieser Code weist lediglich den ersten vier Werten des Puffers neue Werte zu; er füllt damit nicht das gesamte Bild. Der Aufruf von update() sorgt dafür, dass Änderungen am Gleitkommapuffer in der Bildanzeige übernommen werden. Wenn das Ergebnis nicht den Erwartungen entspricht, prüfen Sie zunächst, ob die verwendete Variable auf den richtigen Image-Datenblock verweist und ob der Aktualisierungsaufruf ausgeführt wurde.
3. Das Kopierverhalten überprüfen
Das Kopieren eines Image-Datenblocks bedeutet nicht zwangsläufig, dass Änderungen am Puffer ebenfalls übernommen werden. Die Dokumentation weist darauf hin, dass Puffer nicht zwischen verschiedenen Image-Datenblöcken geteilt und beim Kopieren eines Bildes nicht dupliziert werden. Daher sind nicht auf der Festplatte gespeicherte Pufferänderungen möglicherweise nicht in der Kopie enthalten.
image_dest = image_src.copy()
image_dest.update()
print(image_dest.size)
print(image_dest.pixels[0:4])Prüfen Sie nach dem Erstellen der Kopie deren Größe und Pufferwerte gesondert. Gehen Sie nicht davon aus, dass die Kopie auch die zuletzt am Quellbild vorgenommenen Änderungen enthält. Wenn die Pufferänderungen in die Kopie übernommen werden müssen, prüfen Sie, ob das Bild zuvor auf der Festplatte gespeichert werden muss, und kontrollieren Sie anschließend die Kopie.
4. Das Bild speichern oder in die Projektdatei packen
Die Image API bietet save() zum Speichern eines Bildes und save_render() zum Speichern an einem bestimmten Pfad unter Verwendung der Render-Einstellungen der Szene. Mit pack() können Sie das Bild als eingebettete Daten in die .blend-Datei aufnehmen.
image_src.pack()Packen, Speichern und erneutes Laden sind unterschiedliche Vorgänge. In der API dient unpack() dazu, ein gepacktes Bild auf der Festplatte abzulegen, während reload() das Bild erneut aus seinem Quellpfad lädt. Welche Methode geeignet ist, hängt davon ab, wie Sie den Dateipfad des Bildes und die Daten im Projekt verwalten möchten. Prüfen Sie vor der Übergabe, ob sich das Bild am erwarteten Ort befindet und welchen Status es in der Projektdatei hat.
Wie wählt man ImageTexture-Einstellungen aus?
Die ImageTexture-Optionen bestimmen, wie ein Bild als Textur behandelt wird. Über die Eigenschaft extension legen Sie fest, wie sich der Bereich außerhalb der Bildgrenzen verhält. REPEAT wiederholt das Bild horizontal und vertikal; EXTEND verlängert die Randpixel; CLIP lässt den Bereich außerhalb der Bildgröße transparent. Die Dokumentation führt auch CLIP_CUBE und CHECKER als Optionen auf.
repeat_x und repeat_y legen die horizontalen und vertikalen Wiederholungsfaktoren getrennt fest. Für die Alphaverwendung gibt es use_alpha; mit invert_alpha werden die Alphawerte invertiert. use_interpolation steuert die Interpolation, während filter_size die Filtergröße für die Interpolation beeinflusst. Berücksichtigen Sie bei diesen Einstellungen den Alphakanal des Quellbildes und den vorgesehenen Einsatz der Textur.
Die Image API führt für die Alpha-Darstellung die Optionen STRAIGHT, PREMUL, CHANNEL_PACKED und NONE auf. CHANNEL_PACKED wird in der Dokumentation als Verwendung beschrieben, bei der verschiedene Bilder in den RGB- und Alphakanälen gepackt werden und sich die Kanäle nicht gegenseitig beeinflussen sollen. Wenn die Kanalstruktur der Quelldatei unbekannt ist, prüfen Sie zunächst, wie das Bild vorbereitet wurde, bevor Sie die Alpha-Einstellungen ändern.
Häufige Fehler
Annehmen, dass beim Kopieren auch der Puffer dupliziert wird: Nicht gespeicherte Änderungen sind möglicherweise nicht in der Kopie enthalten. Prüfen Sie Größe und Pufferwerte der Kopie.
Nach der Bearbeitung den Aufruf von
update()vergessen: Aktualisieren Sie das Bild nach Änderungen am Puffer.Das Verhalten an den Texturgrenzen nicht prüfen:
REPEAT,EXTENDundCLIPführen zu unterschiedlichen Ergebnissen. Legen Sie fest, welches Verhalten an den Bildrändern erforderlich ist.Alphawerte unabhängig vom Quellbild ändern: Prüfen Sie, ob ein Alphakanal verwendet wird und welcher Alpha-Modus geeignet ist.
Speichern und Packen für denselben Vorgang halten:
save(),pack(),unpack()undreload()dienen unterschiedlichen Zwecken. Prüfen Sie den Bildstatus in der Projektdatei und auf der Festplatte getrennt.
Nächste Schritte
Führen Sie die Schritte zunächst in einer kleinen Testdatei aus. Geben Sie nach dem Erstellen des Bildes dessen Größe aus; aktualisieren Sie nach dem Skalieren und Ändern der Pixel den Puffer und prüfen Sie die Werte erneut. Vergleichen Sie beim Testen des Kopierverhaltens die Werte von Quelle und Kopie. Probieren Sie anschließend das Verhalten an den Grenzen und die Wiederholungseinstellungen für ImageTexture kontrolliert aus. Prüfen Sie vor dem Einsatz in einer Architekturvisualisierungsszene den Dateipfad des Quellbildes, die Alphaverwendung und ob das Bild im Projekt gepackt werden soll.
Quellen und Lizenz
Dieser Leitfaden basiert auf den offiziellen Python-API-Dokumenten von Blender zu bpy.types.Image und bpy.types.ImageTexture. Beide Quellen stehen unter der Lizenz CC BY-SA 4.0; der Inhalt wurde ins Türkische übertragen.
Quellen
2 QuellenQuelltexte werden nicht neu veröffentlicht; kurze Zitate sind gekennzeichnet, der Rest ist eigene Zusammenfassung und Einordnung.
Die Eigenschaften von Image und ImageTexture bieten Büros, die Bilddaten per Skript bearbeiten oder wiederholte Textur-Einstellungen standardisieren möchten, nützliche Kontrollmöglichkeiten. Wenn Sie insbesondere das Kopierverhalten und die Frage, ob das Bild im Projekt gepackt ist, vor der Übergabe prüfen, lassen sich Unklarheiten bei der Dateiübergabe reduzieren.
Für Teams und Studierende in der Türkei hängt der praktische Nutzen dieses Ansatzes von den vorhandenen Python-Kenntnissen und dem Umfang wiederkehrender Aufgaben im Workflow ab. Die API-Seiten machen keine Angaben zu Hardwareanforderungen, Kosten oder Lizenzbedingungen. Prüfen Sie daher die verwendete Blender-Version und Arbeitsumgebung gesondert, statt in diesen Punkten von allgemeinen Voraussetzungen auszugehen.
Häufige Fragen
Wie erstellt man mit der Blender Python API einen Image-Datenblock?
In der Blender-Python-Umgebung lässt sich ein Image-Datenblock mit `bpy.data.images.new()` erstellen. Die Größe des erstellten Bildes kann über die Eigenschaft `size` ausgelesen werden.
Werden beim Kopieren eines Images in Blender auch die Pixeländerungen kopiert?
Nicht immer. Laut API-Dokumentation werden Puffer nicht zwischen verschiedenen Image-Datenblöcken geteilt und beim Kopieren nicht dupliziert. Nicht gespeicherte Änderungen werden möglicherweise nicht übernommen.
Wozu dienen REPEAT und CLIP in ImageTexture?
`REPEAT` wiederholt das Bild horizontal und vertikal. `CLIP` lässt den Bereich außerhalb der Bildgröße transparent.



