write_imagewrite_imageWriteImageWriteImage (Operator)

Name

write_imagewrite_imageWriteImageWriteImage — Schreiben von Bildern in Graphikformaten.

Signatur

write_image(Image : : Format, FillColor, FileName : )

Herror write_image(const Hobject Image, const char* Format, const Hlong FillColor, const char* FileName)

Herror T_write_image(const Hobject Image, const Htuple Format, const Htuple FillColor, const Htuple FileName)

void WriteImage(const HObject& Image, const HTuple& Format, const HTuple& FillColor, const HTuple& FileName)

void HImage::WriteImage(const HString& Format, const HTuple& FillColor, const HTuple& FileName) const

void HImage::WriteImage(const HString& Format, Hlong FillColor, const HString& FileName) const

void HImage::WriteImage(const char* Format, Hlong FillColor, const char* FileName) const

void HImage::WriteImage(const wchar_t* Format, Hlong FillColor, const wchar_t* FileName) const   (Nur Windows)

static void HOperatorSet.WriteImage(HObject image, HTuple format, HTuple fillColor, HTuple fileName)

void HImage.WriteImage(string format, HTuple fillColor, HTuple fileName)

void HImage.WriteImage(string format, int fillColor, string fileName)

Beschreibung

write_imagewrite_imageWriteImageWriteImageWriteImage gibt das angegebene Bild (ImageImageImageImageimage) in verschiedenen Bildformaten in Dateien aus. Falls die Domäne im gewünschten FormatFormatFormatFormatformat nicht abgespeichert werden kann (das ist der Fall bei 'bmp', 'jpeg' und 'ima'), erhalten die Pixel außerhalb der Region die durch FillColorFillColorFillColorFillColorfillColor definierte Farbe. Für Grauwertbilder muss ein Wert zwischen 0 (Schwarz) und 255 (Weiß) angegeben werden, bei Farbbildern können direkt die RGB-Werte angegeben werden, z.B. hexadezimal: 0xffff00 fuer einen gelben Hintergrund (Rot=255, Grün=255, Blau=0).

Derzeit werden folgende Formate unterstützt:

'tiff', 'bigtiff': TIFF-Format, Dateiendung: .tif

Alle in HALCON definierten Pixeltypen werden unterstützt. Bildobjekttupel mit bis zu 65535 Bildobjekten mit 65535 Kanälen können abgespeichert werden. Bildobjekte mit Kanälen gemischten Pixeltyps können abgespeichert werden.

Komprimierung ist möglich mit
'deflate [num]'"deflate [num]""deflate [num]""deflate [num]""deflate [num]": Adobe-Deflate-Komprimierung (verlustfrei)
'jpeg [num]'"jpeg [num]""jpeg [num]""jpeg [num]""jpeg [num]": JPEG (verlustbehaftet)
'lzw'"lzw""lzw""lzw""lzw": LZW (verlustfrei)
'packbits'"packbits""packbits""packbits""packbits": PackBits (verlustfrei)

'[num]'"[num]""[num]""[num]""[num]" bedeutet hier eine optionale Angabe der Komprimierung. Bei 'deflate'"deflate""deflate""deflate""deflate" kann eine Zahl zwischen 0 (keine Komprimierung) und 9 (maximale Komprimierung) angegeben werden. Bei 'jpeg'"jpeg""jpeg""jpeg""jpeg" kann eine Zahl zwischen 0 und 100 angegeben werden. Die Semantik ist identisch mit der unten bei 'jpeg' beschriebenen Semantik. 'jpeg'"jpeg""jpeg""jpeg""jpeg" kann nur bei Bildern vom Typ byte oder int1 verwendet werden. Außerdem können nur Bilder mit höchstens vier Kanälen geschrieben werden.

Abspeichern der Region jedes Bildobjektes ist in komprimierter Form über 'mask'"mask""mask""mask""mask" (Standardeinstellung) oder als Alphakanal über 'alpha'"alpha""alpha""alpha""alpha" möglich. Die Region wird nur abgespeichert, falls sie nicht das gesamte Bild umfasst. Die gleichzeitige Wahl von 'jpeg'"jpeg""jpeg""jpeg""jpeg" und 'alpha'"alpha""alpha""alpha""alpha" ist nicht möglich, da durch die verlustbehaftete Komprimierung die Region nicht mehr korrekt rekonstruiert werden könnte. Die Optionen können durch Leerzeichen getrennt aneinander gefügt werden.

Beispiele:
'tiff deflate 9'"tiff deflate 9""tiff deflate 9""tiff deflate 9""tiff deflate 9": Maximale Adobe-Deflate-Komprimierung,
die Region wird falls nötig als Maskenbild abgespeichert
'tiff jpeg 90'"tiff jpeg 90""tiff jpeg 90""tiff jpeg 90""tiff jpeg 90": JPEG-Komprimierung mit hoher Qualität,
die Region wird falls nötig als Maskenbild abgespeichert
'tiff lzw alpha'"tiff lzw alpha""tiff lzw alpha""tiff lzw alpha""tiff lzw alpha": LZW-Komprimierung,
die Region wird falls nötig als Alpha-Kanal abgespeichert
'tiff'"tiff""tiff""tiff""tiff" oder 'tiff none'"tiff none""tiff none""tiff none""tiff none" Keine Komprimierung,
die Region wird falls nötig als Maskenbild abgespeichert

Es ist zu beachten, dass 'bigtiff'"bigtiff""bigtiff""bigtiff""bigtiff" TIFF-Dateien bezeichnet, die größer als 4 GB sein können, während 'tiff'"tiff""tiff""tiff""tiff" TIFF-Dateien bezeichnet, die maximal 4 GB groß sein können. Die Dateigröße hängt von der Bildgröße und der verwendeten Kompression ab. Deshalb sollte 'bigtiff'"bigtiff""bigtiff""bigtiff""bigtiff" verwendet werden, falls die Möglichkeit besteht, dass die komprimierte Datei größer als 4 GB wird.

'bmp': Windows-BMP-Format, Dateiendung *.bmp

Dieses Format kann nur Bilder mit einem Kanal (Grauwertbilder) oder mit drei Kanälen (RGB-Farbbilder) speichern.

Für dieses Format werden nur Bilder mit dem Pixeltyp byte unterstützt.

'jpeg': JPEG-Format (verlustbehaftete Komprimierung), Dateiendung *.jpg

Zusammen mit dem Format kann ein Qualitätsmaß angeben werden, das die Komprimierungsrate und die Qualität des gespeicherten Bildes bestimmt. Große Werte (Maximum 100) erzeugen eine relativ große Datei mit hoher Qualität, bei kleine Werten nimmt die Qualität und die Dateigröße deutlich ab. Beispiel: 'jpeg 30'"jpeg 30""jpeg 30""jpeg 30""jpeg 30".

Dieses Format kann nur Bilder mit einem Kanal (Grauwertbilder) oder mit drei Kanälen (RGB-Farbbilder) speichern.

Für dieses Format werden nur Bilder mit dem Pixeltyp byte unterstützt.

Achtung: Bilder, die zu einem späteren Zeitpunkt noch ausgewertet werden müssen, sollten aufgrund der Verluste nicht im JPEG-Format abgespeichert werden!

'jp2': JPEG-2000-Format (verlustfreie und verlustbehaftete Komprimierung), Dateiendung *.jp2

Zusammen mit dem Format kann ein Maß angegeben werden, welches die Komprimierungsrate und damit die Qualität des gespeicherten Bildes bestimmt (z.B. 'jp2 40'"jp2 40""jp2 40""jp2 40""jp2 40"). Der angegebene Wert entspricht ungefähr dem Verhältnis der Größe des komprimierten Bildes zur Größe des unkomprimierten Bildes (in Prozent). Da JPEG-2000 ohnehin stark komprimiert, haben erst kleinere Werte (typischerweise unter 50) Einfluss auf die Dateigröße. Wenn kein Wert angegeben wird (und nur dann), wird das Bild verlustfrei komprimiert.

Das zu speichernde Bild kann beliebig viele Kanäle enthalten. Als Typen sind byte, cyclic, direction, int1, uint2, int2 und int4 zugelassen, wobei im Falle von int4 nur eine Farbtiefe von 24 Bit möglich ist (wird diese überschritten, wird eine Fehlerbehandlung ausgelöst). Falls ein Bild mit eingeschränktem Definitionsbereich übergeben wird, wird die Region als Alphakanal mit einer Farbtiefe von einem Bit abgespeichert.

Die Kodierung eines Bildes ins JPEG-2000 Format benötigt sehr viel Speicher. Es wird deshalb empfohlen, für große Bilder ein anderes Format (z.B. 'tiff') zu verwenden. Die maximal unterstüzte Bildgröße (Breite x Höhe) für JPEG-2000 beträgt auch in HALCON-XL.

'jpegxr': JPEG-XR-Format (verlustfreie und verlustbehaftete Komprimierung), Dateiendung *.jxr

Zusammen mit dem Format kann ein Maß angegeben werden, welches die Komprimierungsrate und damit die Qualität des gespeicherten Bildes bestimmt (z.B. 'jpegxr 30'"jpegxr 30""jpegxr 30""jpegxr 30""jpegxr 30" oder 'jpegxr 100'"jpegxr 100""jpegxr 100""jpegxr 100""jpegxr 100" bzw. 'jpegxr'"jpegxr""jpegxr""jpegxr""jpegxr" für verlustfreie Komprimierung). Alle HALCON-Bildtypen außer int8 werden unterstützt. Es können Bildobjekttupel mit einer beliebigen Anzahl von Bildobjekten geschrieben werden. Bilder können bis zu 8 Kanäle aufweisen. Im Falle von int4 und float Bildern wird die numerische Genauigkeit auf 24 Bit eingeschränkt. Dies kann zu Verlusten führen unabhängig von der Einstellung für die Qualität. Wird ein Bild mit eingeschränktem Definitionsbereich geschrieben, wird die Region verlustfrei als 1-bit Alphakanal gespeichert. Die Bildtypen complex, vector_field und Zweikanalbilder werden mit einem leeren dritten Kanal abgespeichert.

Es ist zu beachten, dass Bilder, unabhängig vom Zielverzeichnis, nicht im JPEG-XR gespeichert werden können, falls keine Schreibrechte für das aktuelle Arbeitsverzeichnis vorliegen.

'png': PNG-Format (verlustfreie Komprimierung), Dateiendung *.png

Zusammen mit dem Format kann ein Komprimierungsgrad zwischen 0 und 9 angegeben werden, wobei 0 keiner Komprimierung und 9 der bestmöglichen Komprimierung entspricht. Alternativ kann die Komprimierung über folgende Konstanten ausgewählt werden: 'best'"best""best""best""best", 'fastest'"fastest""fastest""fastest""fastest" und 'none'"none""none""none""none". Korrekte Formatparameter sind also z.B. 'png'"png""png""png""png", 'png 7'"png 7""png 7""png 7""png 7" und 'png none'"png none""png none""png none""png none".

In PNG-Dateien können Bilder vom Typ byte und uint2 abgespeichert werden. Falls ein Bild mit eingeschränktem Definitionsbereich übergeben wird, wird die Region als Alpha-Kanal abgespeichert, wobei die Punkte innerhalb des Definitionsbereichs mit dem maximalen Grauwert des Eingabebildtyps abgespeichert werden und die Punkte außerhalb des Definitionsbereichs mit dem Grauwert 0. Falls ein Bild mit vollem Definitionsbereich übergeben wird, wird kein Alpha-Kanal abgespeichert.

Dieses Format kann nur Bilder mit einem Kanal (Grauwertbilder) oder mit drei Kanälen (Farbbilder) speichern. Die maximal unterstüzte Bildgröße (Breite x Höhe) für PNG beträgt auch in HALCON-XL.

'hobj': HALCON-Format, Dateiendung *.hobj

Alle HALCON-Bildtypen werden unterstützt. Die Beschreibung des Operators write_objectwrite_objectWriteObjectWriteObjectWriteObject enthält weitere Informationen über das HOBJ-Format.

'ima': HALCON-Format, Dateiendung *.ima und *.exp

Diese Format gilt als veraltet, und es sollte stattdessen das HOBJ-Format verwendet werden. Die Daten werden binär und zeilensequentiell (ohne Header oder Zeilentrenner) geschrieben. Die Größe des Bildes und der Pixeltyp wird in der Beschreibungsdatei 'FileName.exp'"FileName.exp""FileName.exp""FileName.exp""FileName.exp" abgelegt. Alle HALCON-Pixeltypen außer 'complex'"complex""complex""complex""complex" und 'vector_field'"vector_field""vector_field""vector_field""vector_field" können geschrieben werden. Es können nur einkanalige Bilder gespeichert werden.

Ausführungsinformationen

Parameter

ImageImageImageImageimage (input_object)  (multichannel-)image(-array) objectHImageHImageHobject (byte / direction / cyclic / int1 / complex / int2 / uint2 / vector_field / int4 / int8 / real)

Zu speichernde Bilder.

FormatFormatFormatFormatformat (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Graphikformat.

Defaultwert: 'tiff' "tiff" "tiff" "tiff" "tiff"

Wertevorschläge: 'tiff'"tiff""tiff""tiff""tiff", 'tiff mask'"tiff mask""tiff mask""tiff mask""tiff mask", 'tiff alpha'"tiff alpha""tiff alpha""tiff alpha""tiff alpha", 'tiff deflate 9'"tiff deflate 9""tiff deflate 9""tiff deflate 9""tiff deflate 9", 'tiff deflate 9 alpha'"tiff deflate 9 alpha""tiff deflate 9 alpha""tiff deflate 9 alpha""tiff deflate 9 alpha", 'tiff jpeg 90'"tiff jpeg 90""tiff jpeg 90""tiff jpeg 90""tiff jpeg 90", 'tiff lzw'"tiff lzw""tiff lzw""tiff lzw""tiff lzw", 'tiff lzw alpha '"tiff lzw alpha ""tiff lzw alpha ""tiff lzw alpha ""tiff lzw alpha ", 'tiff packbits'"tiff packbits""tiff packbits""tiff packbits""tiff packbits", 'bigtiff'"bigtiff""bigtiff""bigtiff""bigtiff", 'bigtiff mask'"bigtiff mask""bigtiff mask""bigtiff mask""bigtiff mask", 'bigtiff alpha'"bigtiff alpha""bigtiff alpha""bigtiff alpha""bigtiff alpha", 'bigtiff deflate 9'"bigtiff deflate 9""bigtiff deflate 9""bigtiff deflate 9""bigtiff deflate 9", 'bigtiff deflate 9 alpha'"bigtiff deflate 9 alpha""bigtiff deflate 9 alpha""bigtiff deflate 9 alpha""bigtiff deflate 9 alpha", 'bigtiff jpeg 90'"bigtiff jpeg 90""bigtiff jpeg 90""bigtiff jpeg 90""bigtiff jpeg 90", 'bigtiff lzw'"bigtiff lzw""bigtiff lzw""bigtiff lzw""bigtiff lzw", 'bigtiff lzw alpha '"bigtiff lzw alpha ""bigtiff lzw alpha ""bigtiff lzw alpha ""bigtiff lzw alpha ", 'bigtiff packbits'"bigtiff packbits""bigtiff packbits""bigtiff packbits""bigtiff packbits", 'bmp'"bmp""bmp""bmp""bmp", 'jpeg'"jpeg""jpeg""jpeg""jpeg", 'jpeg 100'"jpeg 100""jpeg 100""jpeg 100""jpeg 100", 'jpeg 80'"jpeg 80""jpeg 80""jpeg 80""jpeg 80", 'jpeg 60'"jpeg 60""jpeg 60""jpeg 60""jpeg 60", 'jpeg 40'"jpeg 40""jpeg 40""jpeg 40""jpeg 40", 'jpeg 20'"jpeg 20""jpeg 20""jpeg 20""jpeg 20", 'jp2'"jp2""jp2""jp2""jp2", 'jp2 50'"jp2 50""jp2 50""jp2 50""jp2 50", 'jp2 40'"jp2 40""jp2 40""jp2 40""jp2 40", 'jp2 30'"jp2 30""jp2 30""jp2 30""jp2 30", 'jp2 20'"jp2 20""jp2 20""jp2 20""jp2 20", 'jpegxr'"jpegxr""jpegxr""jpegxr""jpegxr", 'jpegxr 50'"jpegxr 50""jpegxr 50""jpegxr 50""jpegxr 50", 'jpegxr 40'"jpegxr 40""jpegxr 40""jpegxr 40""jpegxr 40", 'jpegxr 30'"jpegxr 30""jpegxr 30""jpegxr 30""jpegxr 30", 'jpegxr 20'"jpegxr 20""jpegxr 20""jpegxr 20""jpegxr 20", 'png'"png""png""png""png", 'png best'"png best""png best""png best""png best", 'png fastest'"png fastest""png fastest""png fastest""png fastest", 'png none'"png none""png none""png none""png none", 'ima'"ima""ima""ima""ima", 'hobj'"hobj""hobj""hobj""hobj"

FillColorFillColorFillColorFillColorfillColor (input_control)  number HTupleHTupleHtuple (integer / real) (int / long / double) (Hlong / double) (Hlong / double)

Füllgrauwert für Bildpunkte, die nicht zur Domäne (Region) der Bilder gehören.

Defaultwert: 0

Wertevorschläge: -1, 0, 255, 65280, 16711680

FileNameFileNameFileNameFileNamefileName (input_control)  filename.write(-array) HTupleHTupleHtuple (string) (string) (HString) (char*)

Name der Bilddatei.

Dateiendung: .hobj, .ima, .tif, .tiff, .bmp, .jpg, .jpeg, .jp2, .jxr, .png

Ergebnis

Sind die Parameterwerte korrekt, dann liefert write_imagewrite_imageWriteImageWriteImageWriteImage den Wert 2 (H_MSG_TRUE). Andernfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

open_windowopen_windowOpenWindowOpenWindowOpenWindow, read_imageread_imageReadImageReadImageReadImage

Modul

Foundation