Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

CStringIO pour générer des images

11 réponses
Avatar
Salvatore
Bonsoir la communauté,

J'aimerais dans mes fichiers HTA générer dynamiquement
des images avec le module 'PIL' .
Malheureusement la balise '<img src=' /> n'accepte qu'un nom de
fichier.
Quelqu'un aurait-il une idée sans utiliser 'print content-type...'
avec le module CStringIO ?

J'espère avoir été clair...

CCordialement

Salvatore

10 réponses

1 2
Avatar
|-| /-\\ |_ \(\)7 [°¿°]
Bonsoir !


Ah ! la ! la ! J'ai longtemps cherché, sans succès.

Avec Opera (et Firefox), il est possible de mettre du base64 dans une URL ; exemple :

<img src="data:image/gif;base64,
R0lGODlhAwEgAPcAAP///87OzqWlpYSEhHNzc2tra1paWiEYGP9CGP8xAL1SEN6thO+cQv+E
AP/OGP/OAM7Oxr29xjEA/2MA/5wA/+8A/+dK79573talzv8AnO9KjP8AY+eEnO9SY/8AGAAA
...



Mais, ça ne marche pas avec IE, et donc pas avec les .HTA.

J'ai cherché deux autres voies (en fait deux versions du même trucs) :
- lors d'envoi d'e-mails-art intégrant des images ("payload"), l'image est encodée en base64 et
accompagne ainsi le message
- en sauvegardant une page (web/html) contenant une image, sous le format .MHT (archive-Web), tout
est inclus dans le document (image en base64).

Malheureusement, je n'ai pas trouvé de moyen de lier ça à une page en cours d'utilisation.


Bref, si tu trouves un moyen, ça m'intéresserait beaucoup !


@+

Michel Claveau
Avatar
Salvatore
Merci Michel,

J'ai bien peur que nos recherches restent vaines.
Satané IE !!!
Avatar
William Dode
On 24-10-2007, Salvatore wrote:
Bonsoir la communauté,

J'aimerais dans mes fichiers HTA générer dynamiquement
des images avec le module 'PIL' .
Malheureusement la balise '<img src=' /> n'accepte qu'un nom de
fichier.
Quelqu'un aurait-il une idée sans utiliser 'print content-type...'
avec le module CStringIO ?


Quel est le problème avec print content-type ? C'est fait pour...

--
William Dodé - http://flibuste.net
Informaticien indépendant

Avatar
Méta-MCI \(MVP\)
Bonsoir !

Je pense que les propos de Salvatore sont flous. Il veut pouvoir mettre/manipuler/visualiser une
image dans une page HTML (ici dans un .HTA), sans passer par un fichier disque.

@+

MCI
Avatar
William Dode
On 24-10-2007, Méta-MCI (MVP) wrote:
Bonsoir !

Je pense que les propos de Salvatore sont flous. Il veut pouvoir mettre/manipuler/visualiser une
image dans une page HTML (ici dans un .HTA), sans passer par un fichier disque.


Justement, en changeant le content-type ça se fait très bien sans passer
par un fichier disque... Par ex je fait qq chose comme ça pour envoyer
des icones :

gifs {"print":'''
R0lGODlhEAAOAIQAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8N7e3gB7AAD/ACkx/ylj
/1paWoSEhK21rb29vc7Ozt7e3ufv5/f39////////////////////////////////////yH5BAEA
AB8ALAAAAAAQAA4AAAVT4CeKUGma4whNVutOQEpaTl1bsby6b55CloZQiAMYVSxeCwBhxk7QkpPp
UlgVk6yzGY0yuS1rVkDWNj9AcZbB1h6N8Hj8kQNYrthJJAKgp+SAIyEAOw= ''',}

self.content_type = "image/gif"
self.echo(base64.decodestring(g))


--
William Dodé - http://flibuste.net
Informaticien indépendant

Avatar
Salvatore
Bonjour,

Effectivement je n'ai pas été très clair :-)

J'utilise effectivement un fichier .hta et je ne passe
pas par un serveur.
Voici l'exemple:


<code>
#http://lost-theory.org/python/dynamicimg.html
import Image,ImageDraw
import cStringIO
from random import randint as rint

def randgradient():
img = Image.new("RGB", (300,300), "#FFFFFF")
draw = ImageDraw.Draw(img)

r,g,b = rint(0,255), rint(0,255), rint(0,255)
dr = (rint(0,255) - r)/300.
dg = (rint(0,255) - g)/300.
db = (rint(0,255) - b)/300.
for i in range(300):
r,g,b = r+dr, g+dg, b+db
draw.line((i,0,i,300), fill=(int(r),int(g),int(b)))

f = cStringIO.StringIO()
img.save(f, "PNG")

print "Content-type: image/pngn"
f.seek(0)
print f.read()

#Ici je désire mettre à jour le "<div id='centre>"
def displayImage():
setValue('centre',r"<img src='%s'/>"%randgradient())
</code>

La partie qui pe pose problème est :

print "Content-type: image/pngn"
f.seek(0)
print f.read()

Je ne peux pas utiliser 'print' dans ce script.
Quel valeur de retour puis-je renvoyer ?

Salvatore















On 24-10-2007, Méta-MCI (MVP) wrote:
Bonsoir !

Je pense que les propos de Salvatore sont flous. Il veut pouvoir mettre/manipuler/visualiser une
image dans une page HTML (ici dans un .HTA), sans passer par un fichier disque.


Justement, en changeant le content-type ça se fait très bien sans passer
par un fichier disque... Par ex je fait qq chose comme ça pour envoyer
des icones :

gifs {"print":'''
R0lGODlhEAAOAIQAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8N7e3gB7AAD/ACkx/ylj
/1paWoSEhK21rb29vc7Ozt7e3ufv5/f39////////////////////////////////////yH5BAEA
AB8ALAAAAAAQAA4AAAVT4CeKUGma4whNVutOQEpaTl1bsby6b55CloZQiAMYVSxeCwBhxk7QkpPp
UlgVk6yzGY0yuS1rVkDWNj9AcZbB1h6N8Hj8kQNYrthJJAKgp+SAIyEAOw= > ''',}

self.content_type = "image/gif"
self.echo(base64.decodestring(g))





Avatar
Salvatore
Michel,

A force de manipuler ces fichiers je finis par me mélanger les pinceaux.
Je ne parviens même pas à ouvrir un simple
fichier texte pour afficher le contenu dans un "div" !!!

Michel, peux-tu me dire si tu y parviens ? merci.

def setValue(divid,data):
elt = document.getElementById(divid)
elt.innerHTML = data

def test():
f = open('/test.txt').read()
setValue('centre',f)

Cordialement

Salvatore



Bonsoir !

Je pense que les propos de Salvatore sont flous. Il veut pouvoir
mettre/manipuler/visualiser une image dans une page HTML (ici dans un
.HTA), sans passer par un fichier disque.

@+

MCI



Avatar
Salvatore
En fait, c'est la fonction 'open' qui pose problème.
En utilisant 'file(..)', plus acun soucis :-)




Michel,

A force de manipuler ces fichiers je finis par me mélanger les pinceaux.
Je ne parviens même pas à ouvrir un simple
fichier texte pour afficher le contenu dans un "div" !!!

Michel, peux-tu me dire si tu y parviens ? merci.

def setValue(divid,data):
elt = document.getElementById(divid)
elt.innerHTML = data

def test():
f = open('/test.txt').read()
setValue('centre',f)

Cordialement

Salvatore



Bonsoir !

Je pense que les propos de Salvatore sont flous. Il veut pouvoir
mettre/manipuler/visualiser une image dans une page HTML (ici dans un
.HTA), sans passer par un fichier disque.

@+

MCI





Avatar
Laurent Pointal
En fait, c'est la fonction 'open' qui pose problème.
En utilisant 'file(..)', plus acun soucis :-)


T'aurais pas un "from os import *" qui traîne quelque part ????

Avatar
Salvatore
T'aurais pas un "from os import *" qui traîne quelque part ????


Tout se passe efectivement comme si os.open était utilisé, mais j'ai
simplement "import os" ...

Salvatore

1 2