![]() |
GDI+ viele Encoder parameter setzen ARRAY[0.0.]
wie setze ich denn mehrere Werte im encoderParameters gleichzeitig ??
Mein Versuch wie folgt : (geht leider nicht zum comilieren)
Delphi-Quellcode:
encoderParameters.Count := 3; encoderParameters.Parameter[2].Guid := EncoderCompression; encoderParameters.Parameter[2].Type_ := EncoderParameterValueTypeLong; encoderParameters.Parameter[2].NumberOfValues := 1; encoderParameters.Parameter[2].Value := @CompressionValue; CompressionValue := CompressionNone; encoderParameters.Count := 3; encoderParameters.Parameter[1].Guid := EncoderColorDepth; encoderParameters.Parameter[1].Type_ := EncoderParameterValueTypeLong; encoderParameters.Parameter[1].NumberOfValues := 1; encoderParameters.Parameter[1].Value := @ColorDepthValue; // ColorDepthValue := PixelFormat16bppGrayScale; ColorDepthValue := PixelFormat16bppRGB565; /// // Save the image as ... a with quality level 0...100 // encoderParameters.Count := 1; encoderParameters.Parameter[0].Guid := EncoderQuality; encoderParameters.Parameter[0].Type_ := EncoderParameterValueTypeLong; encoderParameters.Parameter[0].NumberOfValues := 1; encoderParameters.Parameter[0].Value := @quality; quality := 1; die Struktur ist ein Array [0 .. 0] ...
Delphi-Quellcode:
//---------------------------------------------------------------------------
// Encoder Parameter structure //--------------------------------------------------------------------------- {$EXTERNALSYM EncoderParameter} EncoderParameter = record Guid : TGUID; // GUID of the parameter NumberOfValues : ULONG; // Number of the parameter values Type_ : ULONG; // Value type, like ValueTypeLONG etc. Value : Pointer; // A pointer to the parameter values end; TEncoderParameter = EncoderParameter; {$EXTERNALSYM TEncoderParameter} PEncoderParameter = ^TEncoderParameter; {$EXTERNALSYM PEncoderParameter} //--------------------------------------------------------------------------- // Encoder Parameters structure //--------------------------------------------------------------------------- {$ALIGN 1} {$EXTERNALSYM EncoderParameters} EncoderParameters = record Count : UINT; // Number of parameters in this structure Parameter : array[0..0] of TEncoderParameter; // Parameter values end; TEncoderParameters = EncoderParameters; {$EXTERNALSYM TEncoderParameters} PEncoderParameters = ^TEncoderParameters; {$EXTERNALSYM PEncoderParameters} {$ALIGN ON} |
AW: GDI+ viele Encoder parameter setzen ARRAY[0.0.]
hat niemenad eine Idee wie mit obigem Array [0..0] aus dem ersten Post viele Parameter übergebe ??
Das Problem ist wohlähnlich zu : ![]() |
AW: GDI+ viele Encoder parameter setzen ARRAY[0.0.]
|
AW: GDI+ viele Encoder parameter setzen ARRAY[0.0.]
Hallo bernhard_LA,
ich habe das ganze so gelöst:
Delphi-Quellcode:
Gruß
procedure ProzessImage(aSource, aDest : string);
type TMyEncoderParameters = packed record Count : UINT; // Number of parameters in this structure Parameter : array[0..1] of TEncoderParameter; // Parameter values end; var encoderParameters: TMyEncoderParameters; parameterValue1: TEncoderValue; parameterValue2: TEncoderValue; . . . begin encoderParameters.Count := 2; encoderParameters.Parameter[0].Guid := EncoderSaveFlag; encoderParameters.Parameter[0].Type_ := EncoderParameterValueTypeLong; encoderParameters.Parameter[0].NumberOfValues := 1; encoderParameters.Parameter[0].Value := @parameterValue1; encoderParameters.Parameter[1].Guid := EncoderCompression; encoderParameters.Parameter[1].Type_ := EncoderParameterValueTypeLong; encoderParameters.Parameter[1].NumberOfValues := 1; encoderParameters.Parameter[1].Value := @parameterValue2; . . . Gernot |
AW: GDI+ viele Encoder parameter setzen ARRAY[0.0.]
aktuell scheitere ich jetzt daran gültige Werte zu übergeben, Farbtiele und Qualität wollen als Parameter einen Integer und keinen TEncoderValue;
Wenn ich die Parameter wie im Code angegeben übergebe kann ich das erzeugte Bild nicht mehr mir IRFANVIEW öffen (Falsche Bildkodierung :-( )
Delphi-Quellcode:
parameterValue1: TEncoderValue; parameterValue2: TEncoderValue; parameterValue3: integer; parameterValue4: integer; encoderParameters.Count := 3; encoderParameters.Parameter[0].Guid := EncoderSaveFlag; encoderParameters.Parameter[0].Type_ := EncoderParameterValueTypeLong; encoderParameters.Parameter[0].NumberOfValues := 1; encoderParameters.Parameter[0].Value := @parameterValue1; encoderParameters.Parameter[1].Guid := EncoderCompression; encoderParameters.Parameter[1].Type_ := EncoderParameterValueTypeLong; encoderParameters.Parameter[1].NumberOfValues := 1; encoderParameters.Parameter[1].Value := @parameterValue2; encoderParameters.Parameter[2].Guid := EncoderColorDepth; encoderParameters.Parameter[2].Type_ := EncoderParameterValueTypeLong; encoderParameters.Parameter[2].NumberOfValues := 1; encoderParameters.Parameter[2].Value := @parameterValue3; encoderParameters.Parameter[0].Guid := EncoderQuality; encoderParameters.Parameter[0].Type_ := EncoderParameterValueTypeLong; encoderParameters.Parameter[0].NumberOfValues := 1; encoderParameters.Parameter[0].Value := @parameterValue4; parameterValue1 := EncoderValueMultiFrame; parameterValue2 := EncoderValueCompressionNone; parameterValue3 := PixelFormat16bppRGB565; parameterValue4 := 100; |
AW: GDI+ viele Encoder parameter setzen ARRAY[0.0.]
Probier es mal so aus:
Delphi-Quellcode:
Gruß
parameterValue1: TEncoderValue;
parameterValue2: TEncoderValue; parameterValue3: ULONG; parameterValue4: ULONG; encoderParameters.Count := 3; encoderParameters.Parameter[0].Guid := EncoderSaveFlag; encoderParameters.Parameter[0].Type_ := EncoderParameterValueTypeLong; encoderParameters.Parameter[0].NumberOfValues := 1; encoderParameters.Parameter[0].Value := @parameterValue1; encoderParameters.Parameter[1].Guid := EncoderCompression; encoderParameters.Parameter[1].Type_ := EncoderParameterValueTypeLong; encoderParameters.Parameter[1].NumberOfValues := 1; encoderParameters.Parameter[1].Value := @parameterValue2; encoderParameters.Parameter[2].Guid := EncoderColorDepth; encoderParameters.Parameter[2].Type_ := EncoderParameterValueTypeLong; encoderParameters.Parameter[2].NumberOfValues := 1; encoderParameters.Parameter[2].Value := @parameterValue3; encoderParameters.Parameter[3].Guid := EncoderQuality; encoderParameters.Parameter[3].Type_ := EncoderParameterValueTypeLong; encoderParameters.Parameter[3].NumberOfValues := 1; encoderParameters.Parameter[3].Value := @parameterValue4; parameterValue1 := EncoderValueMultiFrame; parameterValue2 := EncoderValueCompressionNone; parameterValue3 := PixelFormat16bppRGB565; parameterValue4 := 100; Gernot |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz