Застрял на коде с этой библиотекой
#GDIPLUS_OK = 0 Enumeration #RotateNoneFlipNone #Rotate90FlipNone #Rotate180FlipNone #Rotate270FlipNone #RotateNoneFlipX #Rotate90FlipX #Rotate180FlipX #Rotate270FlipX #RotateNoneFlipY = #Rotate180FlipX #Rotate90FlipY = #Rotate270FlipX #Rotate180FlipY = #RotateNoneFlipX #Rotate270FlipY = #Rotate90FlipX #RotateNoneFlipXY = #Rotate180FlipNone #Rotate90FlipXY = #Rotate270FlipNone #Rotate180FlipXY = #RotateNoneFlipNone #Rotate270FlipXY = #Rotate90FlipNone EndEnumeration Enumeration #EncoderParameterValueTypeByte = 1 #EncoderParameterValueTypeASCII = 2 #EncoderParameterValueTypeShort = 3 #EncoderParameterValueTypeLong = 4 #EncoderParameterValueTypeRational = 5 #EncoderParameterValueTypeLongRange = 6 #EncoderParameterValueTypeUndefined = 7 #EncoderParameterValueTypeRationalRange = 8 #EncoderParameterValueTypePointer = 9 EndEnumeration ;-Structures. Structure GdiplusStartupInput GdiPlusVersion.l *DebugEventCallback.DebugEventProc SuppressBackgroundThread.l SuppressExternalCodecs.l EndStructure ;The following two structures are used for setting encoder parameters (in our case the 'quality' parameter). Structure EncoderParameter guid.GUID NumberOfValues.l Type.l Value.l EndStructure Structure EncoderParameters Count.i Parameter.EncoderParameter[1] EndStructure ;-Imports. Import "gdiplus.lib" GdiplusStartup(token, *input.GdiplusStartupInput, output) GdiplusShutdown(token) GdipLoadImageFromFile(*filename, *bitmap) GdipImageRotateFlip(image, rotateFlipType) GdipSaveImageToFile(image, filename.p-unicode, *clsidEncoder.CLSID, *encoderParams) GdipDisposeImage(image) GdipGetAllPropertyItems(*image, totalBufferSize.l, numProperties.l, ai);ai is *allItems.PropertyItem GdipGetPropertySize(*image, totalBufferSize.i, numProperties.i) EndImport sourceFile$="d:\gdi+\photo_2025-02-18_14-38-49.jpg" ;Protected input.GdiplusStartupInput, encParams.EncoderParameters input.GdiplusStartupInput\GdiPlusVersion = 1 GdiplusStartup(@token, @input, #Null) ;Was the initialisation successful? If token If GdipLoadImageFromFile(@sourceFile$, @image) = #GDIPLUS_OK rr=GdipGetPropertySize(@image, @totalBufferSize, @numProperties) Debug rr rr=gdipGetAllPropertyItems(@image,@sz,@np,*m) GdipDisposeImage(image) EndIf ; ;Tidy up. GdiplusShutdown(token) EndIf DataSection ;CLSID for the gdi+ jpeg encoder. clsid_jpeg: Data.l $557CF401 Data.w $1A04, $11D3 Data.b $9A, $73, $00, $00, $F8, $1E, $F3, $2E ;CLSID for the relevant gdi+ encoder parameter. clsid_EncoderQuality: Data.l $1D5BE4B5 Data.w $FA4A, $452D Data.b $9C, $DD, $5D, $B3, $51, $05, $E7, $EB EndDataSection
GdipGetPropertySize возвращает значение или 2 или 4 и дальше не работает. Хотелось бы знать, в чем причина.