J'aimerais connaître les imension d'une image jpg. Pour cela je m'inspir
e de l'exemple donné dans msdn :
#include <windows.h>
#include <gdiplus.h>
#include <stdio.h>
using namespace Gdiplus;
INT main(){
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
Ca fonctionne bien. Le problème est quand je passe le nom du fichier en
paramètre. Sauf erreur, L"chaine" indique que la chaîne "chaine" doit êt
re lue en tant que wchar_t. Mais quand je fais le cast, ça ne marche pas
Pas d'erreur à la compilation, mais à l'exécution, les dimensions reto
urnent systématiquement 0 et 0.
Quelqu'un a un exemple ?
INT main(int argc, char **argv){
//WCHAR fichier_image[256]; // erreur de compil
wchar_t fichier_image[256];
//char fichier_image[256]; // ne fonctionne pas
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Article poste via Voila News - http://www.news.voila.fr
Le : Tue Dec 23 10:41:56 2003 depuis l'IP : 213.11.63.177 [VIP 4643310]
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
kanze
Phil wrote in message news:<bs92l4$bur$...
J'aimerais connaître les imension d'une image jpg. Pour cela je m'inspir e de l'exemple donné dans msdn :
Ça aurait été plus facile à t'aider si tu avais ôté toute la partie qui n'a rien à voir avec ton problème. En attendant, je serais très étonné si on n'a pas des cris « hors sujet », à cause des requêtes MS et d'autres.
[...]
Le problème est quand je passe le nom du fichier en paramètre. Sauf erreur, L"chaine" indique que la chaîne "chaine" doit êt re lue en tant que wchar_t.
Tout à fait.
Mais quand je fais le cast, ça ne marche pas Pas d'erreur à la compilation, mais à l'exécution, les dimensions reto urnent systématiquement 0 et 0. Quelqu'un a un exemple ?
INT main(int argc, char **argv){ //WCHAR fichier_image[256]; // erreur de compil wchar_t fichier_image[256]; //char fichier_image[256]; // ne fonctionne pas
L'un et l'autre de ces fonctions exigent deux pointeurs du même type. Dans le premier cas, tu as fait taire le compilateur en lui mentant -- fichier_image n'est pas un char* (ni un char[]). En général, quand tu mens aux compilateur, il prend sa revanche.
printf("nom du fichier : %sn", fichier_image);
Ce qui est encore une preuve que fichier_image ne contient pas le nom du fichier sur des wchar_t. Les octets de fichier_image contient bien le nom du fichier sur des char, mais ce n'est pas du tout la même chose.
Ce qu'il te faut, c'est réelement une conversion de code, et non simplement un rénommage du type. En C, les fonctions de conversion de code s'appellent mbstowcs et wcstombs. En C++, il faudrait régarder du côté de std::codecvt, mais c'est assez lourd à l'utilisation. Dans les deux cas, il faudrait en principe régarder du côté des locales pour voir ce qu'il te faut, mais dans la pratique, si ton nom de fichier ne contient que des caractères de base (pas d'accents), le locale par défaut doit probablement marcher.
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
Phil <philippe.litou@free.fr> wrote in message
news:<bs92l4$bur$1@news.x-echo.com>...
J'aimerais connaître les imension d'une image jpg. Pour cela je
m'inspir e de l'exemple donné dans msdn :
Ça aurait été plus facile à t'aider si tu avais ôté toute la partie qui
n'a rien à voir avec ton problème. En attendant, je serais très étonné
si on n'a pas des cris « hors sujet », à cause des requêtes MS et
d'autres.
[...]
Le problème est quand je passe le nom du fichier en paramètre. Sauf
erreur, L"chaine" indique que la chaîne "chaine" doit êt re lue en
tant que wchar_t.
Tout à fait.
Mais quand je fais le cast, ça ne marche pas Pas d'erreur à la
compilation, mais à l'exécution, les dimensions reto urnent
systématiquement 0 et 0. Quelqu'un a un exemple ?
INT main(int argc, char **argv){
//WCHAR fichier_image[256]; // erreur de compil
wchar_t fichier_image[256];
//char fichier_image[256]; // ne fonctionne pas
L'un et l'autre de ces fonctions exigent deux pointeurs du même type.
Dans le premier cas, tu as fait taire le compilateur en lui mentant --
fichier_image n'est pas un char* (ni un char[]). En général, quand tu
mens aux compilateur, il prend sa revanche.
printf("nom du fichier : %sn", fichier_image);
Ce qui est encore une preuve que fichier_image ne contient pas le nom du
fichier sur des wchar_t. Les octets de fichier_image contient bien le
nom du fichier sur des char, mais ce n'est pas du tout la même chose.
Ce qu'il te faut, c'est réelement une conversion de code, et non
simplement un rénommage du type. En C, les fonctions de conversion de
code s'appellent mbstowcs et wcstombs. En C++, il faudrait régarder du
côté de std::codecvt, mais c'est assez lourd à l'utilisation. Dans les
deux cas, il faudrait en principe régarder du côté des locales pour voir
ce qu'il te faut, mais dans la pratique, si ton nom de fichier ne
contient que des caractères de base (pas d'accents), le locale par
défaut doit probablement marcher.
--
James Kanze GABI Software mailto:kanze@gabi-soft.fr
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
J'aimerais connaître les imension d'une image jpg. Pour cela je m'inspir e de l'exemple donné dans msdn :
Ça aurait été plus facile à t'aider si tu avais ôté toute la partie qui n'a rien à voir avec ton problème. En attendant, je serais très étonné si on n'a pas des cris « hors sujet », à cause des requêtes MS et d'autres.
[...]
Le problème est quand je passe le nom du fichier en paramètre. Sauf erreur, L"chaine" indique que la chaîne "chaine" doit êt re lue en tant que wchar_t.
Tout à fait.
Mais quand je fais le cast, ça ne marche pas Pas d'erreur à la compilation, mais à l'exécution, les dimensions reto urnent systématiquement 0 et 0. Quelqu'un a un exemple ?
INT main(int argc, char **argv){ //WCHAR fichier_image[256]; // erreur de compil wchar_t fichier_image[256]; //char fichier_image[256]; // ne fonctionne pas
L'un et l'autre de ces fonctions exigent deux pointeurs du même type. Dans le premier cas, tu as fait taire le compilateur en lui mentant -- fichier_image n'est pas un char* (ni un char[]). En général, quand tu mens aux compilateur, il prend sa revanche.
printf("nom du fichier : %sn", fichier_image);
Ce qui est encore une preuve que fichier_image ne contient pas le nom du fichier sur des wchar_t. Les octets de fichier_image contient bien le nom du fichier sur des char, mais ce n'est pas du tout la même chose.
Ce qu'il te faut, c'est réelement une conversion de code, et non simplement un rénommage du type. En C, les fonctions de conversion de code s'appellent mbstowcs et wcstombs. En C++, il faudrait régarder du côté de std::codecvt, mais c'est assez lourd à l'utilisation. Dans les deux cas, il faudrait en principe régarder du côté des locales pour voir ce qu'il te faut, mais dans la pratique, si ton nom de fichier ne contient que des caractères de base (pas d'accents), le locale par défaut doit probablement marcher.
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
Fabien LE LEZ
On 23 Dec 2003 06:22:37 -0800, wrote:
En attendant, je serais très étonné si on n'a pas des cris « hors sujet »
J'ai vu <windows.h>, j'ai pas eu le courage de lire la suite pour savoir si oui ou non je pouvais hurler ;-)
-- ;-)
On 23 Dec 2003 06:22:37 -0800, kanze@gabi-soft.fr wrote:
En attendant, je serais très étonné
si on n'a pas des cris « hors sujet »
J'ai vu <windows.h>, j'ai pas eu le courage de lire la suite pour
savoir si oui ou non je pouvais hurler ;-)