PB à toute heure et à tout moment. (à parcourir avec modération)

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

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.
  • Index
  •  » Powerscripts
  •  » Récupérer hauteur et largeur d'une image sans la charger

#1 25-07-2008 08:45:26

frichmout  
Membre Geek
Date d'inscription: 13-12-2006
Messages: 54
Pépites: 260
Banque: 0

Récupérer hauteur et largeur d'une image sans la charger

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

 

#2 25-07-2008 08:55:07

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: Récupérer hauteur et largeur d'une image sans la charger

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


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#3 25-07-2008 09:09:51

shahin  
Modérateur
Award: bf
Lieu: val de marne
Date d'inscription: 26-09-2006
Messages: 938
Pépites: 8,675,050,269
Banque: 16,218,225,127,617

Re: Récupérer hauteur et largeur d'une image sans la charger

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


never let people work on more than one thing at once.

Hors ligne

 

#4 25-07-2008 09:32:00

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: Récupérer hauteur et largeur d'une image sans la charger


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#5 25-07-2008 09:37:10

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: Récupérer hauteur et largeur d'une image sans la charger

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

N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#6 25-07-2008 09:52:46

JCZ  
Builder Power
Award: bf
Lieu: 75019 paris
Date d'inscription: 21-05-2007
Messages: 1724
Pépites: 496,453,703,213
Banque: 9,223,372,036,854,776,000

Re: Récupérer hauteur et largeur d'une image sans la charger


Face à l'agression, la puissance de l'intelligence

Hors ligne

 

#7 25-07-2008 09:59:37

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: Récupérer hauteur et largeur d'une image sans la charger

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


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#8 25-07-2008 10:34:42

frichmout  
Membre Geek
Date d'inscription: 13-12-2006
Messages: 54
Pépites: 260
Banque: 0

Re: Récupérer hauteur et largeur d'une image sans la charger

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

 

#9 25-07-2008 13:37:53

shahin  
Modérateur
Award: bf
Lieu: val de marne
Date d'inscription: 26-09-2006
Messages: 938
Pépites: 8,675,050,269
Banque: 16,218,225,127,617

Re: Récupérer hauteur et largeur d'une image sans la charger

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


never let people work on more than one thing at once.

Hors ligne

 

#10 25-07-2008 13:40:36

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: Récupérer hauteur et largeur d'une image sans la charger

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 smiley_726


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#11 25-07-2008 15:05:54

shahin  
Modérateur
Award: bf
Lieu: val de marne
Date d'inscription: 26-09-2006
Messages: 938
Pépites: 8,675,050,269
Banque: 16,218,225,127,617

Re: Récupérer hauteur et largeur d'une image sans la charger

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


never let people work on more than one thing at once.

Hors ligne

 

#12 31-07-2008 14:55:25

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: Récupérer hauteur et largeur d'une image sans la charger

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

 

#13 31-07-2008 15:22:46

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: Récupérer hauteur et largeur d'une image sans la charger

Bonjour et buck !

As-tu un petit script avec un exemple d'appel ?


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#14 21-05-2012 09:46:27

Ben53  
Membre Geek
Date d'inscription: 18-02-2010
Messages: 46
Pépites: 184
Banque: 0

Re: Récupérer hauteur et largeur d'une image sans la charger

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 10:14:56)

Hors ligne

 
  • Index
  •  » Powerscripts
  •  » Récupérer hauteur et largeur d'une image sans la charger

Pied de page des forums

Propulsé par FluxBB 1.2.22