Click here to Skip to main content
15,899,937 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: Captions with files Pin
Anthony Appleyard15-Apr-12 8:25
Anthony Appleyard15-Apr-12 8:25 
AnswerRe: Captions with files Pin
enhzflep15-Apr-12 8:23
enhzflep15-Apr-12 8:23 
GeneralRe: Captions with files Pin
Anthony Appleyard15-Apr-12 8:58
Anthony Appleyard15-Apr-12 8:58 
GeneralRe: Captions with files Pin
enhzflep15-Apr-12 9:02
enhzflep15-Apr-12 9:02 
GeneralRe: Captions with files Pin
Anthony Appleyard15-Apr-12 19:31
Anthony Appleyard15-Apr-12 19:31 
GeneralRe: Captions with files Pin
enhzflep15-Apr-12 20:17
enhzflep15-Apr-12 20:17 
GeneralRe: Captions with files Pin
Anthony Appleyard15-Apr-12 22:23
Anthony Appleyard15-Apr-12 22:23 
AnswerRe: Captions with files Pin
enhzflep3-May-12 22:21
enhzflep3-May-12 22:21 
Hey again,

I was just doing some stuff with GDI+ the other night when I came across the functions available in gdi+ that would do this. Then sometime last night I recalled this thread.

Seems you don't need to be tied to using .NET, you can just use GDI+
It seems a little messy, though these pages should help you:

Reading and Writing Metadata[^]

EDIT:
C++
#include <gdiplus.h>    // needs gdiplus.lib
#include <gdiplus/Gdiplusimaging.h>    // contains tag names and ids

using namespace Gdiplus;

void onTestButton()
{
  GdiplusStartupInput gdiplusStartupInput;
   ULONG_PTR gdiplusToken;
   GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);

   UINT count = 0;
   Image* image = new Image(L"test.jpg");

   // How many properties (pieces of metadata) are in the image?
   count = image->GetPropertyCount();
   if(count == 0)
      return;

   // Allocate a buffer to receive an array of PROPIDs.
   PROPID* propIDs = new PROPID[count];

   image->GetPropertyIdList(count, propIDs);

   // List the retrieved IDs.
   for(UINT j = 0; j < count; ++j)
   {
      int size;
      long *longPtr;//, myInt;
      PropertyItem* propertyItem = NULL;
      size = image->GetPropertyItemSize(propIDs[j]);

    // Allocate a buffer to receive the property item.
       propertyItem = (PropertyItem*)malloc(size);

       // Get the property item.
       image->GetPropertyItem(propIDs[j], size, propertyItem);

        //display it's value'
        if(propertyItem->type == PropertyTagTypeASCII)
        {
              printf("prop tag id: 0x%04X, (string) - value is: %s.\n", propIDs[j], propertyItem->value);
        }
        if(propertyItem->type == PropertyTagTypeLong)
        {
            longPtr = (long*) propertyItem->value;
            printf("prop tag id: 0x%04X, (long) - value is: %d.\n", propIDs[j], *longPtr);
        }
       free(propertyItem);
   }
   delete [] propIDs;
   delete image;
   GdiplusShutdown(gdiplusToken);
}


Output:
prop tag id: 0x010E, (string) - value is: Title.
prop tag id: 0x0131, (string) - value is: GIMP 2.6.8.
prop tag id: 0x0132, (string) - value is: 2012:04:15 10:25:45.
prop tag id: 0x013B, (string) - value is: Author.
prop tag id: 0x8298, (string) - value is: Copyright (c).
prop tag id: 0xA002, (long) - value is: 154.
prop tag id: 0xA003, (long) - value is: 205.
prop tag id: 0x0201, (long) - value is: 14382.
prop tag id: 0x0202, (long) - value is: 4631.


modified 4-May-12 15:10pm.

QuestionCan someone show me how to draw 3D lines? Pin
xy50518814-Apr-12 21:55
xy50518814-Apr-12 21:55 
AnswerRe: Can someone show me how to draw 3D lines? Pin
enhzflep14-Apr-12 23:44
enhzflep14-Apr-12 23:44 
QuestionProgress Bar not worked well with larger values? Pin
Le@rner14-Apr-12 2:43
Le@rner14-Apr-12 2:43 
AnswerRe: Progress Bar not worked well with larger values? Pin
Wes Aday14-Apr-12 2:56
professionalWes Aday14-Apr-12 2:56 
AnswerRe: Progress Bar not worked well with larger values? PinPopular
enhzflep14-Apr-12 3:04
enhzflep14-Apr-12 3:04 
GeneralRe: Progress Bar not worked well with larger values? Pin
Le@rner16-Apr-12 18:55
Le@rner16-Apr-12 18:55 
GeneralRe: Progress Bar not worked well with larger values? Pin
enhzflep16-Apr-12 20:54
enhzflep16-Apr-12 20:54 
AnswerRe: Progress Bar not worked well with larger values? Pin
Maximilien14-Apr-12 3:34
Maximilien14-Apr-12 3:34 
QuestionCreateWindowEx, DestroyWindow, CreateWindowEx Pin
jkirkerx13-Apr-12 10:31
professionaljkirkerx13-Apr-12 10:31 
AnswerThat was just a bad idea - went back to hide and show Pin
jkirkerx13-Apr-12 12:28
professionaljkirkerx13-Apr-12 12:28 
AnswerRe: CreateWindowEx, DestroyWindow, CreateWindowEx Pin
Binu MD16-Apr-12 21:22
Binu MD16-Apr-12 21:22 
GeneralRe: CreateWindowEx, DestroyWindow, CreateWindowEx Pin
jkirkerx17-Apr-12 7:12
professionaljkirkerx17-Apr-12 7:12 
GeneralRe: CreateWindowEx, DestroyWindow, CreateWindowEx Pin
Binu MD17-Apr-12 14:59
Binu MD17-Apr-12 14:59 
GeneralRe: CreateWindowEx, DestroyWindow, CreateWindowEx Pin
jkirkerx17-Apr-12 15:49
professionaljkirkerx17-Apr-12 15:49 
AnswerRe: CreateWindowEx, DestroyWindow, CreateWindowEx Pin
JohnCz25-Apr-12 1:29
JohnCz25-Apr-12 1:29 
GeneralRe: CreateWindowEx, DestroyWindow, CreateWindowEx Pin
jkirkerx25-Apr-12 6:05
professionaljkirkerx25-Apr-12 6:05 
Questionhow is boost_scoped_ptr RAII ? Pin
elelont213-Apr-12 6:56
elelont213-Apr-12 6:56 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.