Some images, especially from digital cameras, have a lot of embedded information. Here is an example (and no, I don't own any iCrap - this is not one of my photos):
ASCII EquipMake Apple
ASCII EquipModel iPhone 5
SHORT Orientation 1
Ratio XResolution 72.000 or 72/1
Ratio YResolution 72.000 or 72/1
SHORT ResolutionUnit 2
ASCII SoftwareUsed 8.4.1
ASCII DateTime 2016:04:24 16:59:18
Type 4 JPEGInterFormat 1098/0000044A
Type 4 JPEGInterLength 2533/000009E5
SHORT YCbCrPositioning 1
BYTE ThumbnailData 255
SHORT ThumbnailCompression 6
Ratio ThumbnailResolutionX 72.000 or 72/1
Ratio ThumbnailResolutionY 72.000 or 72/1
SHORT ThumbnailResolutionUnit 2
SHORT LuminanceTable 2
SHORT ChrominanceTable 2
Ratio ExifExposureTime 0.0012903 or 1/775
Ratio ExifFNumber 2.4000 or 12/5
SHORT ExifExposureProg 2
SHORT ExifISOSpeed 50
Undef$ ExifVer 0221
ASCII ExifDTOrig 2016:04:24 16:59:18
ASCII ExifDTDigitized 2016:04:24 16:59:18
Undef ExifCompConfig 197121/00030201
Ratio ExifShutterSpeed 9.5973 or 12774/1331
Ratio ExifAperture 2.5261 or 4845/1918
Ratio ExifBrightness 8.5695 or 11843/1382
Ratio ExifExposureBias 0.0 or 0/1
SHORT ExifMeteringMode 5
SHORT ExifFlash 16
Ratio ExifFocalLength 4.1200 or 103/25
SHORT ExifSubjectArea 1078
Undef$ ExifMakerNote Apple iOS
ASCII ExifDTOrigSS 784
ASCII ExifDTDigSS 784
Undef$ ExifFPXVer 0100
SHORT ExifColorSpace 1
Type 4 ExifPixXDim 3264/00000CC0
Type 4 ExifPixYDim 2448/00000990
SHORT ExifSensingMethod 2
Undef ExifSceneType 1/00000001
SHORT ExifExposureMode 0
SHORT ExifWhiteBalance 0
SHORT ExifFocalLengthIn35mmFilm 33
SHORT ExifSceneCaptureType 0
The attached viewer shows this info in a console window. I checked it partly with Jeffrey's Image Metadata Viewer (http://regex.info/exif.cgi).
I also noticed that my version of Paint Shop Pro eliminates all this information mercilessly when saving a photo :(
You can drag a list of photos over the exe, or start it standalone in a folder with files in jpg, gif or png format. Cursor left/right scrolls through the images. The second attachment, proptags.lst, must be in the same folder, unless you have VC Express 2010 installed (in that case, the main exe will generate the list).
JJ,
I get a fatal error when trying to execute the EXE file.
"Could not open"
"for Recall, FileRead$ etc.."
I downloaded both files and unzipped them in the same directory.
It needs images. Either you drag them over the exe from some folder, or you put them into the folder.
Least one picture to start?
Your wish is my command 8)
It can load a jpg but not a gif. Fortunately I'm the unique with this behaviour. I get somethig like this:
Quote## Line 26: image could not be loaded ##
What encodes your OS give ?
Clsid: {557CF402-1A04-11D3-9A73-0000F81EF32E}
FormatID: {B96B3CB0-0728-11D3-9D7B-0000F81EF32E}
CodecName: Built-in GIF Codec
FormatDescription: GIF
FilenameExtension: *.GIF
MimeType: image/gif
Version: 1
This is the entire encode
Quote
>gdiplusencoders
Clsid: {557CF400-1A04-11D3-9A73-0000F81EF32E}
FormatID: {B96B3CAB-0728-11D3-9D7B-0000F81EF32E}
CodecName: Built-in BMP Codec
FormatDescription: BMP
FilenameExtension: *.BMP;*.DIB;*.RLE
MimeType: image/bmp
Version: 1
Clsid: {557CF401-1A04-11D3-9A73-0000F81EF32E}
FormatID: {B96B3CAE-0728-11D3-9D7B-0000F81EF32E}
CodecName: Built-in JPEG Codec
FormatDescription: JPEG
FilenameExtension: *.JPG;*.JPEG;*.JPE;*.JFIF
MimeType: image/jpeg
Version: 1
Clsid: {557CF402-1A04-11D3-9A73-0000F81EF32E}
FormatID: {B96B3CB0-0728-11D3-9D7B-0000F81EF32E}
CodecName: Built-in GIF Codec
FormatDescription: GIF
FilenameExtension: *.GIF
MimeType: image/gif
Version: 1
Clsid: {557CF405-1A04-11D3-9A73-0000F81EF32E}
FormatID: {B96B3CB1-0728-11D3-9D7B-0000F81EF32E}
CodecName: Built-in TIFF Codec
FormatDescription: TIFF
FilenameExtension: *.TIF;*.TIFF
MimeType: image/tiff
Version: 1
Clsid: {557CF406-1A04-11D3-9A73-0000F81EF32E}
FormatID: {B96B3CAF-0728-11D3-9D7B-0000F81EF32E}
CodecName: Built-in PNG Codec
FormatDescription: PNG
FilenameExtension: *.PNG
MimeType: image/png
Version: 1
Here are mine. They are all identical: the built-in GDI+ encoders. Question is really why caballero's GIF encoder doesn't work.
Clsid: {557CF400-1A04-11D3-9A73-0000F81EF32E}
FormatID: {B96B3CAB-0728-11D3-9D7B-0000F81EF32E}
CodecName: Built-in BMP Codec
FormatDescription: BMP
FilenameExtension: *.BMP;*.DIB;*.RLE
MimeType: image/bmp
Version: 1
Clsid: {557CF401-1A04-11D3-9A73-0000F81EF32E}
FormatID: {B96B3CAE-0728-11D3-9D7B-0000F81EF32E}
CodecName: Built-in JPEG Codec
FormatDescription: JPEG
FilenameExtension: *.JPG;*.JPEG;*.JPE;*.JFIF
MimeType: image/jpeg
Version: 1
Clsid: {557CF402-1A04-11D3-9A73-0000F81EF32E}
FormatID: {B96B3CB0-0728-11D3-9D7B-0000F81EF32E}
CodecName: Built-in GIF Codec
FormatDescription: GIF
FilenameExtension: *.GIF
MimeType: image/gif
Version: 1
Clsid: {557CF405-1A04-11D3-9A73-0000F81EF32E}
FormatID: {B96B3CB1-0728-11D3-9D7B-0000F81EF32E}
CodecName: Built-in TIFF Codec
FormatDescription: TIFF
FilenameExtension: *.TIF;*.TIFF
MimeType: image/tiff
Version: 1
Clsid: {557CF406-1A04-11D3-9A73-0000F81EF32E}
FormatID: {B96B3CAF-0728-11D3-9D7B-0000F81EF32E}
CodecName: Built-in PNG Codec
FormatDescription: PNG
FilenameExtension: *.PNG
MimeType: image/png
Version: 1
Well, I'd say that my gifencoder does work (I can see that in in ie, for example), perhaps it's all that I don't have masmbasic installed.
DELETED
Quote from: caballero on November 30, 2016, 04:01:37 AM
Well, I'd say that my gifencoder does work (I can see that in in ie, for example), perhaps it's all that I don't have masmbasic installed.
Mine works fine on a drive where MasmBasic is not installed. IE may have its own decoder.
Did you ever write code with GdipCreateBitmapFromFile or GdipCreateBitmapFromStream and use it with GIFs?
Tim uses GdipLoadImageFromFile, while I load the file into memory and then use GdipCreateBitmapFromStream, the reason being that you can't modify and save an image that was loaded with GdipLoadImageFromFile.
> Twell
Your example gives me Error 3, OutOfMemory
> JJ
No, I haven't ever written such codes. I only use gdi, so only manage bmp
Quote from: caballero on November 30, 2016, 04:44:14 AM
> Twell
Your example gives me Error 3, OutOfMemory
I get no error, but if I a take an arbitrary little text file and name it test1.gif, Tim's proggie gives me error 3, too.
Attached a version that uses only embedded images, starting with a tiff, then a jpg, the rest are GIFs. I've also refined the error message, it now reports the true gdistatus message.
Perfect here. No problem with Tim's test1.gif
JJ, your new example shows me two images:
* Something like a molecule
* A window
Still it shows: "Line 30: image could not be loaded: InvalidParameter"
Though the firs time I executed it I got: "Could not open C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include\GdiPlusImaging.h for Recall, FileRead$ etc."
The program you attached yesterday worked for me in another computer, though the TWell example not even get up.
Another example that works for me is the magdelouahab crystall ball, though it is a png.
I'll try to have it a look this weekend if I have time.
Regards
Quote from: caballero on November 30, 2016, 07:42:41 PM
JJ, your new example shows me two images:
* Something like a molecule
* A window
Still it shows: "Line 30: image could not be loaded: InvalidParameter"
Molecule is tiff, the window is jpg, then follow four simple gif images. None of them works for you, apparently...
QuoteThough the firs time I executed it I got: "Could not open C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include\GdiPlusImaging.h for Recall, FileRead$ etc."
That was the internal routine that generates the PropTags.lst sent earlier - I attach it here again.
QuoteThe program you attached yesterday worked for me in another computer, though the TWell example not even get up.
Another example that works for me is the magdelouahab crystall ball, though it is a png.
TWell's example remains silent if it doesn't find errors. So your machine accepts jpg, tiff, png but not gif. Big mystery 8)
Did you ever install something to manipulate gif images etc ?
On my machine, there are apparently several gdiplus.dll versions installed:
3662933 lines read, 5489 ms
Search for: gdiplus.dll
gdiplus.dll, line 1122668 :"D14F593908F0E234A9958B4E777E1E36"="C:\\Program Files (x86)\\OpenOffice 4\\program\\gdiplus.dll"
gdiplus.dll, line 1315477 :"9040110900063D11C8EF10054038389C"="C:\\Program Files (x86)\\Microsoft Office\\OFFICE11\\GDIPLUS.DLL"
gdiplus.dll, line 1315478 :"9040580900063D11C8EF10054038389C"="C:\\Program Files (x86)\\MS Word viewer\\OFFICE11\\GDIPLUS.DLL"
gdiplus.dll, line 1997863 :"C:\\Program Files (x86)\\Common Files\\Web Solution Mart\\gdiplus.dll"=dword:00000001
536 ms for finding 4 entries in 3662933 linesSearch for: gdiplus.dll
Yes, my example show only error code if exist.
Here is modified code for it, more noise, based code from PellesC forum.
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
//#include "GdiPlusFlat.h"
#pragma comment(lib, "gdiplus.lib")
// https://msdn.microsoft.com/en-us/library/windows/desktop/ms534041(v=vs.85).aspx
typedef int GpStatus;
#define WINGDIPAPI __stdcall
#define GDIPCONST const
typedef struct
{
UINT32 GdiplusVersion ;
void* DebugEventCallback ;
BOOL SuppressBackgroundThread ;
BOOL SuppressExternalCodecs ;
} GDIPLUSSTARTUPINPUT ;
typedef struct
{
void* NotificationHook; //NotificationHookProc NotificationHook;
void* NotificationUnhook; //NotificationUnhookProc NotificationUnhook;
} GDIPLUSSTARTUPOUTPUT ;
int __stdcall GdiplusStartup(ULONG_PTR*, const GDIPLUSSTARTUPINPUT*, GDIPLUSSTARTUPOUTPUT*) ;
void __stdcall GdiplusShutdown(ULONG_PTR) ;
typedef void GpImage;
int __stdcall GdipLoadImageFromFile(WCHAR* filename, GpImage **image);
int __stdcall GdipSaveImageToFile(GpImage *image, WCHAR* filename, const CLSID* clsidEncoder, void*);
int __stdcall GdipDisposeImage(GpImage*);
TCHAR *GdiplusStatusToString(int statusID);
GDIPLUSSTARTUPINPUT gdiplusStartupInput = { 1, NULL, FALSE, FALSE } ;
ULONG_PTR gdiplusToken;
const CLSID CLSID_image_bmp = {0x557CF400,0x1A04,0x11D3,0x9A,0x73,0x00,0x00,0xF8,0x1E,0xF3,0x2E};
const CLSID CLSID_image_jpeg = {0x557CF401,0x1A04,0x11D3,0x9A,0x73,0x00,0x00,0xF8,0x1E,0xF3,0x2E};
const CLSID CLSID_image_gif = {0x557CF402,0x1A04,0x11D3,0x9A,0x73,0x00,0x00,0xF8,0x1E,0xF3,0x2E};
const CLSID CLSID_image_tiff = {0x557CF405,0x1A04,0x11D3,0x9A,0x73,0x00,0x00,0xF8,0x1E,0xF3,0x2E};
const CLSID CLSID_image_png = {0x557CF406,0x1A04,0x11D3,0x9A,0x73,0x00,0x00,0xF8,0x1E,0xF3,0x2E};
const CLSID CLSID_image_ico = {0x557CF407,0x1A04,0x11D3,0x9A,0x73,0x00,0x00,0xF8,0x1E,0xF3,0x2E};
void __cdecl WinMainCRTStartup(void)
{
GpStatus status;
GpImage *image = NULL;
TCHAR szTmp[MAX_PATH];
HANDLE hLib = LoadLibrary("GdiPlus.dll");
GetModuleFileName(hLib, szTmp, sizeof(szTmp));
MessageBox(0, szTmp, 0, 0);
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
status = GdipLoadImageFromFile(L"test1.gif", (GpImage **)&image);
if (status == 0) {
//status = GdipSaveImageToFile(image, L"test1.png", &CLSID_image_png, NULL);
GdipDisposeImage(image);
} //else {
wsprintf(szTmp, TEXT("Error: %d\n%s"), status, GdiplusStatusToString(status));
MessageBox(0, szTmp, 0, 0);
GdiplusShutdown(gdiplusToken);
ExitProcess(0);
}
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
TCHAR *GdiplusStatusToString(int statusID)
{
switch (statusID)
{
case 0: return TEXT("Ok"); break;
case 1: return TEXT("GenericError"); break;
case 2: return TEXT("InvalidParameter"); break;
case 3: return TEXT("OutOfMemory"); break;
case 4: return TEXT("ObjectBusy"); break;
case 5: return TEXT("InsufficientBuffer"); break;
case 6: return TEXT("NotImplemented"); break;
case 7: return TEXT("Win32Error"); break;
case 8: return TEXT("Aborted"); break;
case 9: return TEXT("FileNotFound"); break;
case 10: return TEXT("Aborted"); break;
case 11: return TEXT("ValueOverflow"); break;
case 12: return TEXT("AccessDenied"); break;
case 13: return TEXT("UnknownImageFormat"); break;
case 14: return TEXT("FontFamilyNotFound"); break;
case 15: return TEXT("FontStyleNotFound"); break;
case 16: return TEXT("NotTrueTypeFont"); break;
case 17: return TEXT("UnsupportedGdiplusVersion"); break;
case 18: return TEXT("GdiplusNotInitialized"); break;
case 19: return TEXT("PropertyNotFound"); break;
case 20: return TEXT("PropertyNotSupported"); break;
case 21: return TEXT("ProfileNotFound"); break;
default: return TEXT("Status Type Not Found."); break;
};
}
EDIT: Another with LoadLibrary() for testing GdiPlus.dll in local folder:#define WIN32_LEAN_AND_MEAN
#include <windows.h>
//#include "GdiPlusFlat.h"
//#pragma comment(lib, "gdiplus.lib")
// https://msdn.microsoft.com/en-us/library/windows/desktop/ms534041(v=vs.85).aspx
typedef int GpStatus;
#define WINGDIPAPI __stdcall
#define GDIPCONST const
typedef struct
{
UINT32 GdiplusVersion ;
void* DebugEventCallback ;
BOOL SuppressBackgroundThread ;
BOOL SuppressExternalCodecs ;
} GDIPLUSSTARTUPINPUT ;
typedef struct
{
void* NotificationHook; //NotificationHookProc NotificationHook;
void* NotificationUnhook; //NotificationUnhookProc NotificationUnhook;
} GDIPLUSSTARTUPOUTPUT ;
int __stdcall GdiplusStartup(ULONG_PTR*, const GDIPLUSSTARTUPINPUT*, GDIPLUSSTARTUPOUTPUT*) ;
void __stdcall GdiplusShutdown(ULONG_PTR) ;
typedef void GpImage;
int __stdcall GdipLoadImageFromFile(WCHAR* filename, GpImage **image);
int __stdcall GdipSaveImageToFile(GpImage *image, WCHAR* filename, const CLSID* clsidEncoder, void*);
int __stdcall GdipDisposeImage(GpImage*);
#define DYNDLL
#ifdef DYNDLL
typedef int (WINAPI GDIPLUSSHUTDOWN)(ULONG_PTR);
typedef GDIPLUSSHUTDOWN *PGDIPLUSSHUTDOWN;
typedef int (WINAPI GDIPLUSSTARTUP)(void*, void*, void*);
typedef GDIPLUSSTARTUP *PGDIPLUSSTARTUP;
typedef int (WINAPI GDIPLOADIMAGEFROMFILE)(void*, void*);
typedef GDIPLOADIMAGEFROMFILE *PGDIPLOADIMAGEFROMFILE;
typedef int (WINAPI GDIPDISPOSEIMAGE)(void*);
typedef GDIPDISPOSEIMAGE *PGDIPDISPOSEIMAGE;
#else
#pragma comment(lib, "gdiplus.lib")
#endif
TCHAR *GdiplusStatusToString(int statusID);
GDIPLUSSTARTUPINPUT gdiplusStartupInput = { 1, NULL, FALSE, FALSE } ;
ULONG_PTR gdiplusToken;
void __cdecl WinMainCRTStartup(void)
{
GpStatus status;
GpImage *image = NULL;
HANDLE hLib;
TCHAR szTmp[MAX_PATH];
#ifdef DYNDLL
hLib = LoadLibrary(".\\GdiPlus.dll");
if (hLib) {
static PGDIPLUSSTARTUP GdiplusStartup;
static PGDIPLUSSHUTDOWN GdiplusShutdown;
static PGDIPLOADIMAGEFROMFILE GdipLoadImageFromFile;
static PGDIPDISPOSEIMAGE GdipDisposeImage;
GdiplusStartup = (PGDIPLUSSTARTUP)GetProcAddress(hLib, "GdiplusStartup");
GdiplusShutdown = (PGDIPLUSSHUTDOWN)GetProcAddress(hLib, "GdiplusShutdown");
GdipLoadImageFromFile = (PGDIPLOADIMAGEFROMFILE)GetProcAddress(hLib, "GdipLoadImageFromFile");
GdipDisposeImage = (PGDIPDISPOSEIMAGE)GetProcAddress(hLib, "GdiplusStartup");
#else
hLib = LoadLibrary("GdiPlus.dll");
#endif
GetModuleFileName(hLib, szTmp, sizeof(szTmp));
MessageBox(0, szTmp, 0, 0);
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
status = GdipLoadImageFromFile(L"test1.gif", (GpImage **)&image);
if (status == 0)
GdipDisposeImage(image);
wsprintf(szTmp, TEXT("Error: %d\n%s"), status, GdiplusStatusToString(status));
MessageBox(0, szTmp, 0, 0);
GdiplusShutdown(gdiplusToken);
#ifdef DYNDLL
FreeLibrary(hLib);
}
#endif
ExitProcess(0);
}
>Did you ever install something to manipulate gif images etc ?
My God, no, as long as I know ;). In fact,
this John Findley's code (http://www.johnfindlay.plus.com/pellesc/GdiPlus/GdiPlusDemos_workspace.zip) works perfectly in my computer, including the wizard gif image :greenclp:
Well, the mystery continues ;)
I got curious and checked my gdiplus.dll versions. There are four registry entries, see above, and my Windows folder has stored GdiPlus.dll in various locations. Here is the list of 100 - it's genuine Windows, greetings to Redmond :tamd64_microswinsxs\Backup 2.19 MB 14.10.16 09:48
amd64_microswinsxs\Backup 2.07 MB 14.10.16 09:48
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.17514_none_3bd2e 2.19 MB 21.11.10 04:24
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.17825_none_3bd3c 2.19 MB 21.4.12 06:16
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18120_none_3bd44 2.19 MB 3.4.13 06:46
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18455_none_3bd6d 2.19 MB 26.4.14 03:32
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18658_none_3bd68 2.19 MB 11.11.14 04:03
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18716_none_3bd2b 2.19 MB 13.1.15 04:04
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18741_none_3bd62 2.19 MB 3.2.15 04:28
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18834_none_3bd4e 2.19 MB 20.4.15 04:11
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18852_none_3bd71 2.19 MB 15.5.15 19:14
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18946_none_3bd5b 2.19 MB 30.7.15 18:55
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.19044_none_3bd5e 2.19 MB 17.10.15 18:59
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.19054_none_3bd6e 2.19 MB 3.11.15 19:56
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.19061_none_3bd82 2.19 MB 10.11.15 19:45
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.21977_none_250af 2.19 MB 21.4.12 06:09
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.22290_none_250d9 2.19 MB 3.4.13 06:16
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.22667_none_2509f 2.19 MB 26.4.14 03:24
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.22865_none_250a2 2.19 MB 11.11.14 04:35
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.22922_none_25066 2.19 MB 13.1.15 04:33
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.22948_none_2507e 2.19 MB 3.2.15 04:44
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.23038_none_2506e 2.19 MB 20.4.15 04:06
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.23055_none_25092 2.19 MB 15.5.15 19:14
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.23149_none_2507d 2.19 MB 30.7.15 19:12
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.23250_none_25099 2.19 MB 20.10.15 02:01
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.23259_none_2508d 2.19 MB 3.11.15 20:03
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.23265_none_250a2 2.19 MB 10.11.15 19:49
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.23407_none_2503f 2.19 MB 29.3.16 19:58
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.23545_none_25082 2.19 MB 12.9.16 22:08
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.17514_none_2b245 2.06 MB 21.11.10 04:24
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.17825_none_2b253 2.07 MB 21.4.12 06:16
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.18120_none_2b25b 2.07 MB 3.4.13 06:46
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.18455_none_2b283 2.07 MB 26.4.14 03:32
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.18834_none_2b265 2.07 MB 20.4.15 04:11
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.18852_none_2b288 2.07 MB 15.5.15 19:14
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.18946_none_2b272 2.07 MB 30.7.15 18:55
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.19044_none_2b275 2.07 MB 17.10.15 18:59
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.19054_none_2b285 2.07 MB 3.11.15 19:56
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.19061_none_2b299 2.07 MB 10.11.15 19:45
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.21977_none_145c6 2.07 MB 21.4.12 06:09
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.22290_none_145f0 2.07 MB 3.4.13 06:16
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.22667_none_145b6 2.07 MB 26.4.14 03:24
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23038_none_14585 2.07 MB 20.4.15 04:06
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23055_none_145a9 2.07 MB 15.5.15 19:14
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23149_none_14594 2.07 MB 30.7.15 19:12
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23250_none_145b0 2.07 MB 20.10.15 02:01
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23259_none_145a4 2.07 MB 3.11.15 20:03
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23265_none_145b9 2.07 MB 10.11.15 19:49
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23407_none_14556 2.07 MB 29.3.16 19:58
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23508_none_14555 2.07 MB 29.7.16 16:31
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23545_none_14599 2.07 MB 12.9.16 22:08
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.17514_none_83801b5 1.64 MB 21.11.10 04:24
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.17825_none_8381047 1.64 MB 21.4.12 05:21
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18120_none_8381793 1.64 MB 3.4.13 05:50
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18455_none_838407c 1.64 MB 26.4.14 03:07
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18658_none_8383c32 1.64 MB 11.11.14 03:39
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18716_none_837fef6 1.64 MB 13.1.15 03:44
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18741_none_8383623 1.64 MB 3.2.15 04:08
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18834_none_83821d6 1.64 MB 20.4.15 03:52
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18852_none_83844b9 1.64 MB 15.5.15 18:58
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18946_none_8382f00 1.64 MB 30.7.15 18:46
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.19044_none_838320b 1.64 MB 17.10.15 18:39
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.19054_none_8384210 1.64 MB 3.11.15 19:45
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.19061_none_838565a 1.64 MB 10.11.15 19:29
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.21977_none_6cb8319 1.64 MB 21.4.12 05:12
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.22290_none_6cbad48 1.64 MB 3.4.13 05:25
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.22667_none_6cb7339 1.64 MB 26.4.14 02:55
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.22865_none_6cb760e 1.64 MB 11.11.14 04:13
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.22922_none_6cb3a3f 1.64 MB 13.1.15 03:57
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.22948_none_6cb51bd 1.64 MB 3.2.15 04:25
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.23038_none_6cb41eb 1.64 MB 20.4.15 03:54
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.23055_none_6cb663a 1.64 MB 15.5.15 19:02
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.23149_none_6cb5081 1.64 MB 30.7.15 18:43
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.23250_none_6cb6d54 1.64 MB 20.10.15 01:38
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.23259_none_6cb6083 1.64 MB 3.11.15 19:44
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.23265_none_6cb763a 1.64 MB 10.11.15 19:31
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.23407_none_6cb1341 1.64 MB 29.3.16 19:25
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.23545_none_6cb562a 1.65 MB 12.9.16 21:49
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.17514_none_72d18a4 1.55 MB 21.11.10 04:24
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.17825_none_72d2735 1.55 MB 21.4.12 05:21
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.18120_none_72d2e82 1.55 MB 3.4.13 05:50
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.18455_none_72d576a 1.55 MB 26.4.14 03:07
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.18834_none_72d38c5 1.55 MB 20.4.15 03:52
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.18852_none_72d5ba7 1.55 MB 15.5.15 18:58
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.18946_none_72d45ee 1.55 MB 30.7.15 18:46
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.19044_none_72d48fa 1.55 MB 17.10.15 18:39
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.19054_none_72d58fe 1.55 MB 3.11.15 19:45
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.19061_none_72d6d48 1.55 MB 10.11.15 19:29
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.21977_none_5c09a07 1.55 MB 21.4.12 05:12
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.22290_none_5c0c436 1.55 MB 3.4.13 05:25
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.22667_none_5c08a28 1.55 MB 26.4.14 02:55
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23038_none_5c058d9 1.55 MB 20.4.15 03:54
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23055_none_5c07d28 1.55 MB 15.5.15 19:02
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23149_none_5c0676f 1.55 MB 30.7.15 18:43
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23250_none_5c08442 1.55 MB 20.10.15 01:38
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23259_none_5c07771 1.55 MB 3.11.15 19:44
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23265_none_5c08d28 1.55 MB 10.11.15 19:31
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23407_none_5c02a2f 1.55 MB 29.3.16 19:25
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23508_none_5c028c0 1.55 MB 29.7.16 16:15
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23545_none_5c06d18 1.55 MB 12.9.16 21:49
x86_microsofwinsxs\Backup 1.65 MB 14.10.16 09:48
x86_microsofwinsxs\Backup 1.55 MB 14.10.16 09:48
I only have a few
N° Name Folder Size Ext
1 GdiPlus.dll C:\Windows\winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.17514_none_3bd2e487d8e769d3\ 2.239 KB .dll
2 GdiPlus.dll C:\Windows\winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18455_none_3bd6d0f1d8e3e5a6\ 2.240 KB .dll
3 GdiPlus.dll C:\Windows\winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.22667_none_2509fcc7f28a9296\ 2.240 KB .dll
4 GdiPlus.dll C:\Windows\winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.17514_none_2b24536c71ed437a\ 2.115 KB .dll
5 GdiPlus.dll C:\Windows\winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.18455_none_2b283fd671e9bf4d\ 2.116 KB .dll
6 GdiPlus.dll C:\Windows\winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.22667_none_145b6bac8b906c3d\ 2.116 KB .dll
7 amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18455_none_3bd6d0f1d8e3e5a6_gdiplus.dll_423f7010 C:\Windows\winsxs\Backup\ 2.240 KB .dll_423f7010
8 amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.18455_none_2b283fd671e9bf4d_gdiplus.dll_423f7010 C:\Windows\winsxs\Backup\ 2.116 KB .dll_423f7010
9 x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18455_none_838407c8ed600eac_gdiplus.dll_423f7010 C:\Windows\winsxs\Backup\ 1.683 KB .dll_423f7010
10 x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.18455_none_72d576ad8665e853_gdiplus.dll_423f7010 C:\Windows\winsxs\Backup\ 1.588 KB .dll_423f7010
11 GdiPlus.dll C:\Windows\winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.17514_none_83801b5eed6392d9\ 1.683 KB .dll
12 GdiPlus.dll C:\Windows\winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18455_none_838407c8ed600eac\ 1.683 KB .dll
13 GdiPlus.dll C:\Windows\winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.22667_none_6cb7339f0706bb9c\ 1.683 KB .dll
14 GdiPlus.dll C:\Windows\winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.17514_none_72d18a4386696c80\ 1.587 KB .dll
15 GdiPlus.dll C:\Windows\winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.18455_none_72d576ad8665e853\ 1.588 KB .dll
16 GdiPlus.dll C:\Windows\winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.22667_none_5c08a283a00c9543\ 1.589 KB .dll
One more attempt: I have added a check for the stream creation.
Windows 10, as excepted with rtf-file:
File #108 - stream 02782598
## line 39: image could not be loaded, InvalidParameter
Now I can see also the dedndave avatar in the third position. Similar result to TWell:
File #103 - stream 00726390
## line 31: image could not be loaded, InvalidParameter
Hi caballero,
Tim had an idea: Find out where gdiplus.dll sits, and try some tests with it on a different PC.
Attached is a new executable that reacts to pressing D (like Dll) - it asks if the path should be copied to the clipboard.
.elseif wParam==VK_D
Let dllname$=Space$(MAX_PATH)
invoke GetModuleFileName, rv(LoadLibrary, "GdiPlus.dll"), dllname$, MAX_PATH
MsgBox 0, dllname$, "Put path on clipboard?", MB_YESNOCANCEL
If_ eax==IDYES Then SetClip$ dllname$
Find it, zip it, post it somewhere (800k zipped - too much for the forum), and hopefully we can solve the mystery :icon14:
Mine sits at C:\Windows\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23545_none_5c06d189a00e2c29\GdiPlus.dll - and it's the only file in that folder. One of a hundred locations where gdiplus.dll can be found on my machine - a brilliant example of superior software design Made in Redmond :lol:
These versions was tested in one Windows 7 PC and all works.
1.0.7601.17514
1.0.7601.18455
1.0.7601.22667
1.1.7601.17514
1.1.7601.18455
1.1.7601.22667
same versions as in caballero's list.
With LoadLibrary("GdiPlus.dll"), I always get the long WinSxS path, even if Gdiplus.dll sits in the exe's folder. Only if I rename the file to e.g. GdiPlux.dll, I can force loading this one. The test will be tricky :biggrin:
I used dynamic loading, HANDLE hLib = LoadLibrary(".\\GdiPlus.dll"); in tests and local copy of dll.
http://masm32.com/board/index.php?topic=5827.msg62174#msg62174
Quote from: TWell on December 01, 2016, 06:44:08 AM.\\GdiPlus.dll
The OS believes it's a specific file, so instead of redirecting LoadLibrary to the obscure sxs location, it takes it from the current folder. Neat trick, thanks :t
P.S.: In the meantime, I found out that my GdiPlus.dll is version 1.1, i.e. contains e.g. GdipDeleteEffect, while \Masm32\lib\gdiplus.lib is version 1.0 :(
There should be #101 - #107, 7 pictures.
I did a drag and drop of an image file, a PNG toolbar and it worked fine, scaled with resizing the window and ran correctly. Put an image in your next demo so that mere mortals can test it. :P
This is a tricky problem that goes beyond the simple gdiplus demo. What happens here is as follows:
- coder X installs Masm32 on his PC
- during this process, gdiplus.lib gets created
- when building a source with e.g. GdipCreateFromHDC, you'll see jmp near [<&gdiplus.GdipCreateFromHDC>] in the disassembly
- but where does it go?
GdipCreateFromHD 8BFF mov edi, edi
715082F4 55 push ebp
Questions:
1. Does it go to 715082F2 on all Win7-64 machines?
2. Would user X normally see another entry point (jj dll != caballero dll)?
3. If coder X has a different Win7-64 machine, and thus built a different gdiplus.lib during Masm32 setup, how does that affect a gdiplus call?
I attach my \Masm32\lib\gdiplus.lib - perhaps caballero could post his version, too, and then we can check if there are any differences. It might turn out that the OS decides which DLL to use internally, maybe based on some obscure manifest setting.
Note also that my gdiplus.lib contains only the version 1.0 functions, despite the fact that my gdiplus.dll is version 1.1
Is this becauses \Masm32\include\gdiplus.inc does not contain them?
Is there a simple way to recreate gdiplus.lib with the few 1.1 functions added manually to gdiplus.inc?
If yes, what would happen if a program built with the new functions would run on WinXP, where these functions do not exist?
::)
Just for curiosity, I have attached a testing video here (http://www.abreojosensamblador.net/Tmp/Test.wmv) with Findley's and JJ's samples working
Thanks, caballero. Your gdiplus.lib seems different from mine, but only for time stamps. Which means apparently that the OS decides which gdiplus.dll to use. You have a Spanish Windows version, I suppose?
Don't know what is exactly a Spanish Windows version. It seems that many things are English, but are showed in Spanish. For example:
Windows explorer shows: "Equipo > OSDisk (C:) > Archivos de programa >"
But if you click on the navigation bar the above dissapears and shows: "C:\Program Files"
If I try to do a ">cd Archivos de programa", it fails. What is working is ">cd Program Files"
Quote from: caballero on December 01, 2016, 11:02:37 PM
Don't know what is exactly a Spanish Windows version.
I have an Italian one. It is a real nuisance because all the useful posts in the world wide web refer to the english OS. So "Pannello di controllo" is "Control Panel" etc... and as you noted,
cd C:\Programmi (x86) chokes but
cd Program Files (x86) works. Inconsistent as usual - greetings to Redmond :(
P.S.: I found a nice old tool called Microsoft GIF Animator here (https://dw14.uptodown.com/dwn/aYSnO-Zq-yGDF1dOmKQRmjssATHnPvVdrFE6W_xS7NNvvzVtjjFNlsXsmIyj0DKuFbYTJ2Zut-l97fd2bqGx6el-fnYAAqALf27D-Fe8pWhcv6DFyu6znk5FToxXGOzh/-j4utcs15rALm-3yRpTMMTJ6hgLB5EeIgstCAXENS3dyof5Juf2KuZo0EKhhma9SXVPk2KP-KXVYXLDO3YwJ_kNyhLtSLbH77Qsk2L0NfVtFSQoQ5P31x1UhhY4ktI8k/iGY_K_nZZvrqM4WzxdzvIEOWfNl7ywrKpLO4Y3M_vK53ePasdAkabkzdT6braZ37B83IZZ3jd4cJRJdn1lbpQ3xyC_x0sq5KJjPkClP-u0PE1jtJCvyL22pHeiDAa6pL/ddPKSnXj0keTyPMLbx88iBvEK3T2WF0zAyy9waKwibY=/gifanimator.exe) or here (http://gwanderson.server101.com/Computer101/gifani.exe) (direct downloads). Useful to work on single frames, e.g. adding transparency as in the attached example (you may need to enlarge the console window to see the FrameDelay sequence for the "shooter"). I had planned to do it programmatically, but it turns out very difficult to save a multiframe GIF to file.
Hello. This are my entire projects, not very succesful. They all showed the gif in the computer where I haved made them, but not here :(
I have started from the Findley's example, but perhaps I missed anything. Anyway, if anyone find them useful, here are them:
- Two versions of PellesC. The first one remains in memory after closed from time to time.
- Masm version. Only show the first frame of the gif. I didn't achive to change the frame.
The window size according to the gif dimension, then you can resize it.
Regards
Do you mean that GdipLoadImageFromFile still don't work in one PC?
No, this function is used by John Findley and works ok. His code works in the pc where I'm sitting in front of now, mine not. Both use GdipLoadImageFromFile. I have missed anything, but I don't have time to look for it.
I am tempted to consider this computer as exotic in relation to gdi+ and gifs
You can try if SuppressExternalCodecs helpsGDIPLUSSTARTUPINPUT gdiplusStartupInput = { 1, NULL, FALSE, TRUE };
Ahem, did I say that Findley's program works? Well, works the 64 bits version, not the 32 bit, ie:
- 64 bits works fine
- 32 bits doesn't work (only gif, the others do)
I have changed my v1 project for 64 bits compiler, but cannot resolve the 'FrameDimensionTime'. Excluding that, it shows (in 64 bits) the fu--ing gif (only the first frame)
the fu--ing gif
Quote from: caballero on December 06, 2016, 12:08:01 AM
I have changed my v1 project for 64 bits compiler, but cannot resolve the 'FrameDimensionTime'. Excluding that, it shows (in 64 bits) the fu--ing gif (only the first frame)
just move #include after that #define GDIP_DEFINE_IMAGING
Yes, now it works :t
Several compiler solutions for and animated and simple gif viewer, 32 and 64 bits. Win32 and 64 of TinyC don't work, the api function GdipLoadImageFromFile gives an error, its two parameters seems to be ok. If anyone find a solution, please, let me know.
Quote from: caballero on December 09, 2016, 06:31:40 PM
Several compiler solutions
Your Masm exe shows the gif, and it builds fine with a small change in line 60: gtkn PULONG
<>? (how did you build that one...?)
PellesC\GdiPlusWC01\GdiPlusWC01.exe shows the gif but misbehaves when closing: it stays in memory with 100% cpu usage :(
PellesC\GdiPlusWC01\GdiPlusWC01.64.exe shows the gif but causes an exception when closing. It builds fine, though, and the exception can be "healed" like this:
//DestroyWindow (hWnd);
Let Windows decide how to destroy windows... ;)
The movingwizard.gif image shows fine with MasmBasic:
GuiParas equ "Hello Gdiplus", x600, y20, w250, h200
include \masm32\MasmBasic\Res\MbGui.asm
Event Paint
GuiImage 123, fit ; resource ID, fit to window size
GuiEnd
> gtkn PULONG <>? (how did you build that one...?)
He he, I don't know masm32 beats everythig :biggrin:
> ... shows the gif but misbehaves when closing...
Didn't you read the readme file, eh?
> Let Windows decide how to destroy windows...
Good advice. It seems that this is the point
> The movingwizard.gif image shows fine with MasmBasic
Congrats, JJ
Thank you, JJ
Quote from: caballero on December 09, 2016, 10:23:38 PMDidn't you read the readme file, eh?
The WOT??? :dazzled: RRRRRRRRRRRRRRR????
;)
Quote from: caballero on December 09, 2016, 06:31:40 PM
Several compiler solutions for and animated and simple gif viewer, 32 and 64 bits. Win32 and 64 of TinyC don't work, the api function GdipLoadImageFromFile gives an error, its two parameters seems to be ok. If anyone find a solution, please, let me know.
For start:
GdiplusStartupInput gsi = {1};
or
gsi.GdiplusVersion = 1;
Even so, doesn't work
Wow, now this works fine, you're fast, Tim. Thank you :t