
Le forum (ô combien francophone) des utilisateurs de Powerbuilder.



Puisque vous avez été hyper bons sur mon dernier post...
Connaissez-vous un moyen simple de récupérer hauteur et largeur d'un fichier image sans (avant) de le charger dans un picture control ?
actuellement, j'utilise une ruse de barbare : charger l'image dans un picture control caché et puis je récupère width et height du picture control en pbunits. En fonction de cela, je continue mon traitement (affichage en réduction en respectant le rapport H/L) mais ce système barbare est mauvais en perf.
Les grosses images font ramer l'ordi au bout d'une dizaine d'affichages car j'ai l'impression que PB ne réinitialise pas correctement la zone mémoire utilisée pour charger l'image de taille réelle dans le picture control caché.
J'ai regardé sur le web mais les ocx de traitement d'image sont tous payants.
J'avais aussi vu que certains utilisent la fonction windows utilisée dans l'explorateur pour afficher la taille de l'image (colonne dimensions) mais je n'ai pas trouvé d'exemple utilisable.
Une soluce les amis ?
Hors ligne














Bonjour, il y avait un post (que je ne retrouve pas) ou la solution a été :
frichmout a écrit:
une ruse de barbare : charger l'image dans un picture control caché et puis je récupère width et height du picture control en pbunits. En fonction de cela, je continue mon traitement (affichage en réduction en respectant le rapport H/L) mais ce système barbare est mauvais en perf.
c'est vrai que cette méthode (avec une API windows) serait meilleure :
frichmout a écrit:
J'avais aussi vu que certains utilisent la fonction windows utilisée dans l'explorateur pour afficher la taille de l'image (colonne dimensions) mais je n'ai pas trouvé d'exemple utilisable.
récup dimensions en pixels et conversion en PBunits
Hors ligne








Ton système barbare me parait très bien.
Pour les bmp, tu peux récupérer la largeur à l'offset 18 du fichier (c'est un entier sur 4 octets), et la longueur à la suite c'est à dire à l'offset 22
http://www.teamsybase.com/roy.kiesler/d … eutils.zip
Hors ligne














Hors ligne














sinon en DOT.NET (PB11)
#IF DEFINED PBDOTNET THEN System.Drawing.Image lo_image lo_image = System.Drawing.Image.FromFile( ls_filepath ) ll_Height = lo_image.Height ll_Width = lo_image.Width #END IF
Hors ligne










Hors ligne














erasorz a écrit:
sinon en DOT.NET (PB11)
Code: pb
#IF DEFINED PBDOTNET THEN System.Drawing.Image lo_image lo_image = System.Drawing.Image.FromFile( ls_filepath ) ll_Height = lo_image.Height ll_Width = lo_image.Width #END IF
ça marche pas
Hors ligne



les file header, ça me plait bien, c'est de ma génération !! (on n'arrêtait pas d'aller trifouiller dans les file header en clipper !!!)
et puis ça doit être bien péchu.
Je vais faire ça. De toutes façons, je suis en PB10 donc la solution .NET ne semble pas s'appliquer.
Merci erazorz !
PPP (Pierre, the Powerbuilder Papy*)
* 50 ans, grand père depuis un an maintenant......
Hors ligne








frichmout a écrit:
les file header, ça me plait bien......
C'est exactement ce qui est fait par Roy Kiesler dans le lien que j'ai fournit
Hors ligne














shahin a écrit:
frichmout a écrit:
les file header, ça me plait bien......
C'est exactement ce qui est fait par Roy Kiesler dans le lien que j'ai fournit
à part que le lien ne marche pas 
Hors ligne








Désolé
comme je ne peux télécharger aucun zip chez mon client, je n'ai pas pu tester
Hors ligne






Personnellement, pour cela, j'utilise le contrôle active X GFLAx (GFLAx).
Il te permet de charger l'image et de la redimensionner de façon très performante l'image en mémoire selon la taille de l'aperçu désiré. Tu récupères l'image retaillé dans un blob que tu affiches dans un picture control.
Hors ligne














Bonjour et buck !
As-tu un petit script avec un exemple d'appel ?
Hors ligne



Merci pour ce code, je ne pense pas assez souvent à utiliser le Framework .net !
Cela fonctionne très bien en PB12.5, bien mieux que la propriété OriginalSize d'un picturecontrol avec chargement dynamique d'image !
Edit : rectification, on arrive pas à récupérer les valeurs de Width et Height, quelqu'un a une idée ?
Merci
erasorz a écrit:
erasorz a écrit:
sinon en DOT.NET (PB11)
Code: pb
#IF DEFINED PBDOTNET THEN System.Drawing.Image lo_image lo_image = System.Drawing.Image.FromFile( ls_filepath ) ll_Height = lo_image.Height ll_Width = lo_image.Width #END IFça marche pas
Dernière modification par Ben53 (21-05-2012 12:14:56)
Hors ligne