F_VN_ExportImageAsJpeg

F_VN_ExportImageAsJpeg 1:

Exports the image as jpeg.

Syntax

Definition:

FUNCTION F_VN_ExportImageAsJpeg : HRESULT
VAR_INPUT
    ipImage      : ITcVnImage;
    ipJpeg       : Reference To ITcVnDataExport;
    nLumaQuality : DINT;
    hrPrev       : HRESULT;
END_VAR

 Inputs

Name

Type

Description

ipImage

ITcVnImage

Source image (ET_USINT or ET_UINT with 1, 3 or 4 channels). ET_UINT only supports lossless compression. 3 channel expects RGB, 4 channel RGBA (alpha is simply ignored, jpeg does not support it).

ipJpeg

Reference To ITcVnDataExport

Returns the jpeg image. The resulting data can be exported via RPC.

nLumaQuality

DINT

Luma quality, which is in a range of 0 - 100 for lossy or 101 - 107 for lossless compression (for lossless, this selects 1 - 7 as the predictor). Recommended: 90 for lossy or 101 for lossless. Lossless compression is significantly slower and leads to larger files, so usually a high-quality lossy compression is the better choice.

hrPrev

HRESULT

HRESULT indicating the result of previous operations (If SUCCEEDED(hrPrev) equals false, no operation is executed.)

 Return value

HRESULT

Weiterführende Informationen

Die Funktion F_VN_ExportImageAsJpeg komprimiert das übergebene Bild in das JPEG-Format und stellt das Ergebnis als exportierbares Datenobjekt bereit. Das Ergebnisbild im JPEG-Format kann anschließend über einen ADS Remote Procedure Call (RPC) aus der Steuerung abgerufen werden.

Der Anwendungsfall ist die Übertragung komprimierter Bilder. Da JPEG eine verlustbehaftete Kompression bietet, lässt sich damit die Datenmenge gegenüber unkomprimierten Bildern deutlich reduzieren. Für Fälle, in denen keine Kompressionsartefakte toleriert werden, steht zusätzlich eine verlustfreie JPEG-Kompression zur Verfügung.

Parameter

Eingangsbild

Das Eingangsbild ipImage muss als ET_USINT oder ET_UINT mit 1, 3 oder 4 Kanälen übergeben werden. Einkanalige Bilder werden als Graustufenbild interpretiert, 3-kanalige Bilder als RGB und 4-kanalige Bilder als RGBA. Der Alpha-Kanal wird bei RGBA ignoriert, da JPEG keine Transparenz unterstützt. Bilder vom Typ ET_UINT können ausschließlich mit der verlustfreien Kompression verwendet werden.

Ergebnisbild

Über ipJpeg wird das komprimierte JPEG-Bild als ITcVnDataExport zurückgegeben. Die Daten können anschließend über einen externen ADS-RPC exportiert und angezeigt oder weiterverarbeitet werden. Zum Abrufen der Daten wird die Methode GetDataIfNewRpcUnlocked() empfohlen. Damit das Interface für ADS verfügbar ist, muss im SPS-Code das folgende Interface deklariert werden:

ipAdsInterface : ITcVnDataExportRpcUnlocked;

Das Interface muss lediglich deklariert werden, im Code wird ausschließlich das ITcVnDataExport verwendet.

Kompressionsqualität

Der Parameter nLumaQuality steuert Art und Güte der Kompression und unterscheidet zwischen verlustbehafteter und verlustfreier Kompression:

  • Verlustbehaftete Kompression (0 - 100)
    Höhere Werte bedeuten bessere Bildqualität bei größerer Datenmenge. Ein empfohlener Startwert ist 90, der einen guten Kompromiss zwischen Qualität und Dateigröße bietet.
  • Verlustfreie Kompression (101 - 107)
    Über die Werte 101 - 107 wird der Prädiktor 1 - 7 der verlustfreien JPEG-Kompression ausgewählt, empfohlen wird 101. Die verlustfreie Kompression benötigt deutlich mehr Rechenzeit und erzeugt größere Datenmengen, sodass in der Regel eine hochwertige verlustbehaftete Kompression die bessere Wahl ist. Für Bilder vom Typ ET_UINT ist dies die einzige unterstützte Kompression.

Expert-Parameter

Die Expert-Variante F_VN_ExportImageAsJpegExp enthält zusätzliche Parameter.

Required License

TC3 Vision Base

System Requirements

Development environment

Target platform

PLC libraries to include

TwinCAT V3.1.4024.59 or later

PC or CX (x64) with min. PL50, e.g. Intel 4-core Atom CPU

Tc3_Vision