Gambas France BETA


Pas de compte ? Incription

Comment afficher dans une PictureBox une image provenant du web

1
AuteurMessages
lolo69#1 Posté le 28/11/2010 à 00:47:00
Bonsoir,

Me revoila avec une question bête...

J'ai des images qui se trouvent sur un site web (url stoke en BDD mysql).
Pour ceux j'ai fait un : PictureBox1.Picture = Picture.Load(rData!affiche)

et ca marche pas. J'ai essayer d'y mettre dans webbrowser mais la ca n'affiche pas mon image.

Quelqu'un à une idée ?

Merci par avance.
Gamuti#2 Posté le 28/11/2010 à 16:32:00
Je ne connais pas encore les commandes SQL.
Par contre, il existe une méthode simple pour récupérer une image stockée sur un serveur web :
1
DIM hFile AS File 'Déclaration d'un fichier pour relectureSHELL "wget [url=http://www.ServeurWebQuelconque.com/ImageAR]http://www.ServeurWebQuelconque.com/ImageAR[/url]écupérer.jpeg -P /tmp/" WAITOPEN "/tmp/ImageARécupérer.jpeg" FOR READ AS #hFile' Puis le morceau de code que tu veux une fois que ton image est récupéréeCLOSE hFileSHELL "rm -r /tmp/ImageARécupérer.jpeg"

Explication :
- DIM permet de déclarer un fichier pour relecture
- le premier SHELL récupère l'image et l'a stocke dans le /tmp/
- WAIT attend la fin d'exécution du SHELL (ça évite de continuer le programme et donc un plantage)
- OPEN / CLOSE c'est pour lire le contenu
- le dernier SHELL supprime l'image du répertoire temporaire /tmp/
lolo69#3 Posté le 29/11/2010 à 18:50:00
Merci Gamuti

effectivement, mais j'aurais bien aimé une version sans copie sur le disque....

en tout cas merci, je vais essayer

Lolo.
Prokopy#4 Posté le 29/11/2010 à 19:29:00
Kinder PinguiSi tu ne veux pas faire de copie sur le disque, tu as la fonction HttpClient.Get() dans le composant gb.net.curl. :)

http://gambasdoc.org/help/comp/gb.net.curl/httpclient?fr&v3
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
lapenduledargent#5 Posté le 26/11/2011 à 14:23:06
Bonjour,

Je m'intéresse également à ce problème.

Je souhaite afficher dans une picturebox une image stockée sur mon serveur.
Je peux utiliser HttpClient ou wget.

C'est quoi le plus simple ? J'ai pas besoin de stocker l'image, juste de l'afficher.

A bientôt

Pierre
lapenduledargent#6 Posté le 27/11/2011 à 14:06:02
Bonjour à tous,

J'ai fait comme expliqué dans ce post avec un shell et WGET. Ça fonctionne bien. Voilà mon code :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
PUBLIC SUB Button5_Click()

NomImage = "fabrication1.jpg" 'nom de l'image
CheminImage = MConfig.HostPoint & "/image/" & NomImage 'Url de l'image

SHELL "wget" & " " & CheminImage & " -P " & MConfig.RepertoireImage 'commande shell et place l'image dans un repertoire tmp

WAIT 3 'pour attendre la fin de la commande shell

IF Exist(MConfig.RepertoireImage & NomImage) THEN 'test pour savoir si le fichier existe bien

PictureBox1.Picture = Picture.Load(MConfig.RepertoireImage & NomImage) 'affichage de l'image

KILL (MConfig.RepertoireImage & NomImage) 'detruit l'image dans le repertoire tmp

ENDIF

END
linuxos#7 Posté le 27/11/2011 à 14:09:09
Un peu de sel, de poivre et la crevette sera... Bonjour

Pourquoi attendre 3 secondes avec la commande WAIT 3

Il suffit de mettre WAIT a la fin de la commande SHELL et ainsi la commande SHELL ne rendra la main qu'a la fin de l'execution de la commande WGET.


Olivier
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
lapenduledargent#8 Posté le 27/11/2011 à 14:55:06
Merci Olivier, c'est en effet plus rapide ainsi.

Bon dimanche

Pierre
gambix#9 Posté le 9/12/2011 à 13:16:48
Faire simple !kakaaaa


Dim hHttpClient as new httpClient
Dim sTmp as String = Temp()

hHttpclient.Async = false

hHttpClient.Url = Urlimage

hHttpClient.Get([""], sTmp)

PictureBox.Picture = Picture[sTmp]



Avec les fautes de code habituelles je suis sous win la
Moins de texte dans une signature c'est agrandir son espace.
manu#10 Posté le 9/12/2011 à 13:53:51
Avec Gambas ca roule !Je suis d'accord avec Gambix, WGet est un logiciel externe à Gambas. Autant utiliser les possibilités de gambas :)
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
lapenduledargent#11 Posté le 9/12/2011 à 18:26:08
Je vais tester ça dimanche mais c'était peut-être un peu lourd de charger, d'afficher et puis effacer le fichier...
manu#12 Posté le 9/12/2011 à 22:18:57
Avec Gambas ca roule !dans les deux cas, c'est ce que tu fait Pierre :)
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
gambix#13 Posté le 9/12/2011 à 22:28:19
Faire simple !sauf que comme j'ai fait tu t'en fou de supprimer le fichier ... temp retourne un fichier temporaire qui sera supprimé par le système.

http://gambasdoc.org/help/lang/temp?fr&v3
Moins de texte dans une signature c'est agrandir son espace.
lapenduledargent#14 Posté le 9/12/2011 à 22:30:12
oui mais avec le code ce gambix, c'est peut-être plus rapide ? Ce qui est certain c'est que son code est plus simple...
gambix#15 Posté le 9/12/2011 à 22:33:20
Faire simple !plus rapide ... je ne sais pas ... juste que c'est dans gambas et que ça évite de faire appelle a un programme extérieur, la tempo est plus simple a maitrisée aussi. Il y a moyen de tester les erreur avec httpclient.statut aussi. Tu peut donner un delais max avec .delay

enfin c'est un très bonne classe :)

je l'utilise pour pomper des sites et garnir des bdd :).
Moins de texte dans une signature c'est agrandir son espace.
1