Membres inscrits :2359
Membres en ligne : 0
Invités en ligne : 3


|
Conversation (Résolue) : Afficher une image stockée en mémoire |
mybofy (Nouveau membre)
Inscrit le : 03-05-2015
Messages: 7
Snippets: 0
Tutoriels: 0
Hors ligne |
Bonjour J'affiche sans problème une image contenue dans un fichier. Il suffit d'un simple :
Code Cpp: ImagePanel *drawPanel = new ImagePanel( frame, wxT("/Users/rn/Apps/AppWx/.../Unknown.jpg"), wxBITMAP_TYPE_ANY); sizer->Add(drawPanel, 1, wxEXPAND);
Mais je ne sais pas afficher une image contenue dans un char * (provenant d'une requête sql) !!! Je dois manquer quelque chose quelque chose quelque part...
Merci
|
|
fabrizio (Membre)
Lieu: france
Inscrit le : 06-04-2008
Messages: 28
Snippets: 0
Tutoriels: 0
Site web
Hors ligne |
Salut
Code Cpp: wxMemoryInputStream stream(my_memory_block, size); wxImage theBitmap; if (!theBitmap.LoadFile(stream, wxBITMAP_TYPE_BMP)) return;
http:/docs.wxwidgets.org/3.0/classwx_me … tream.html
|
Vouloir être de son temps, c'est déjà être dépassé.
|
mybofy (Nouveau membre)
Inscrit le : 03-05-2015
Messages: 7
Snippets: 0
Tutoriels: 0
Hors ligne |
Merci
Pour info, voici mon code complété :
Code Cpp: wxBoxSizer* sizer; wxFrame *frame; wxStaticBitmap* sbmp; wxImage bitmap; int ijk; int delta = 16; for (ijk=0; ijk<PQntuples(res); ijk++) { int width = atoi(PQgetvalue(res, ijk, 2)); int height = atoi(PQgetvalue(res, ijk, 3)); char * imgPQ = PQgetvalue(res, ijk, 1); sizer = new wxBoxSizer(wxHORIZONTAL); frame = new wxFrame(NULL, wxID_ANY, itemSelected, wxPoint(320 + ijk*delta, 32 + ijk*delta), wxSize(width,height+256)); unsigned char *photoChar = (unsigned char *)imgPQ; size_t buflen; char *imgJEPG = (char *)PQunescapeBytea(photoChar, &buflen); wxMemoryInputStream stream(imgJEPG, buflen); if (ijk == 0) bitmap.AddHandler(new wxJPEGHandler); if (!bitmap.LoadFile(stream, wxBITMAP_TYPE_JPEG)) { wxPuts("erreur"); return; } sbmp = new wxStaticBitmap(frame, wxID_STATIC, wxNullBitmap, wxDefaultPosition, wxSize(width, height)); sbmp->SetBitmap(bitmap); frame->SetSizer(sizer); frame->Show(); }
On peut sans doute mieux faire, notamment libérer la mémoire...
|
|
|