OVH Cloud OVH Cloud

image sous forme de data ???

25 réponses
Avatar
unbewusst.sein
je sais qu'il exisste une méthode pour placer dans du html, une image
sous forme de data par exemple, comme ceci :
<A HREF="http://www.framasoft.net/mot17.html" ADD_DATE="1141644991"
LAST_VISIT="1143043625"
ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJS
AAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfTDBMSJg9G4NuKAAAAB3RJTUUH1AEXEhYx5zFw/AAA
AAlwSFlzAAAK8AAACvABQqw0mAAAADBQTFRFQkJCUlJSa2trc3NzjIyMlJSUnJycpaWltbW1
xsb/zs7O1tbW5+fn7+/v////////SxIgfQAAAE5JREFUeNpjmAkFDPPegcFLhnlvVwHBPSDj
TQBLWuI5IOPdA653j99BGe+gjDfrIAyOZXkQBksSlMH1Kg9dMZRxAcp4Y2zsBxGBWgpzBgCx
AlvUDJQxwQAAAABJRU5ErkJggg==" LAST_CHARSET="ISO-8859-1"
ID="rdf:#$2xvhM3">Mac OS X - Logiciels Libres - Framasoft</A>

mais au lieu de mettre ça dans un a href, je souhaite dans une image.

ce que je retrouve par programme est du style :

4d4d002a 00002774 ccaa64cc aa64cfad 67d0ae68

comment puis connaître le codage employé et/ou le format d'image (pour
info ca vient des images du Carnet d'adresse sur MAc OS X, j'utilise
simplement imageData sur une ABPerson)

--
Une Bévue

10 réponses

1 2 3
Avatar
SAM
Une Bévue a écrit :
Pierre Goiffon wrote:

Pas bien le temps d'aller plus avant mais tenez nous au courant je suis
assez persuadé que le sujet intéresse du monde ici (moi en tout cas :) ) !



Bon j'ai trouvé comment faire sur MacOS X :

installer base64 que l'on trouve ici :

http://www.fourmilab.ch/webtools/base64/#Download



Hop! dans la boite fourre-tout à malices :-)

ensuite, pour chaque fichier du répertoire :


(...)
donc c'était pas difficile à faire, reste à emballer ça dans un
script...



:-)

--
sm
Avatar
SAM
Une Bévue a écrit :
SAM wrote:

Ne serait-il pas possible aussi d'explorer Carnet pour voir comment il
fait pour KKbouiller à sa mode les images qu'on lui importe ?



ouais, euh, j'ai pas les sources...



donc, tu as découvert que c'était des images en TIF ?

--
sm
Avatar
unbewusst.sein
SAM wrote:

Je présume qu'il a maintenant la réponse à sa question ?
(images-data-base64 dans navigateur web)



OUI, merci, j'ai trouvé comment faire, je posterai le script "final" dès
que possible...

--
Une Bévue
Avatar
unbewusst.sein
Pierre Goiffon wrote:

Pas bien le temps d'aller plus avant mais tenez nous au courant je suis
assez persuadé que le sujet intéresse du monde ici (moi en tout cas :) ) !



le code résultant en Ruby 1.8.+ sur Mac OS X 10.4.11 :

------------------------------------------------------------------------
#!/usr/bin/env ruby

# ABDataImage.rb

def get_format( fi )
return IO.popen( "/usr/bin/sips -g format "#{fi}"" ).readlines[ 1
].chomp.gsub( /s+format:s+([a-zA-Z]*)$/, '1' )
end
def base64_encode( fi )
lines = ""
IO.popen( "/opt/local/bin/base64 -e "#{fi}"" ).readlines.each { | x
| lines << x }
return lines.chomp
end

def data_image( ab_img_dir )
photos = [ ]
Dir.glob( "#{ab_img_dir}/*" ).each do | fi |
fbn = File.basename( fi )
if ( File.ftype( fi ) === "file" ) && !( /.*.[a-zA-Z]{3,4}$/ == fbn )
photos << "data:image/#{get_format( fi )};base64,#{base64_encode(
fi )}"
end
end
return photos
end

html_fi = "/Users/yt/work/RubyCocoa/AB2Html/image_data_new.html"
html = "<html><body>"
data_image( "/Users/yt/Library/Application Support/AddressBook/Images"
).each do | data_img |
html << "<img src='#{data_img}' /><br />"
end
html << "</body></html>"

File.open( html_fi, File::WRONLY|File::TRUNC|File::CREAT, 0666 ) { | f |
f.puts html }

`open "#{html_fi}"`
------------------------------------------------------------------------

les noms de vrariables/méthodes sont suffisamment clairs pour ne pas
avoir à ajouter de commentaires...

;-)
--
Une Bévue
Avatar
unbewusst.sein
SAM wrote:

donc, tu as découvert que c'était des images en TIF ?



OUI par :

$ /usr/bin/sips -g format <le fichier à tester>

--
Une Bévue
Avatar
unbewusst.sein
SAM wrote:

Hop! dans la boite fourre-tout à malices :-)



petite info : base64 est inclus dans la standard lib the ruby ;-)

chez moi :

$ locate base64.rb
/Users/yt/src/ruby/ruby-1.9.0-0/lib/xmlrpc/base64.rb
/Users/yt/work/Ruby/yarv-r590/lib/base64.rb
/Users/yt/work/Ruby/yarv-r590/lib/xmlrpc/base64.rb
/opt/local/lib/ruby/1.8/base64.rb
/opt/local/lib/ruby/1.8/xmlrpc/base64.rb
/opt/local/lib/ruby/1.9/base64.rb
/opt/local/lib/ruby/1.9/xmlrpc/base64.rb
/opt/local/lib/ruby/1.9.0/xmlrpc/base64.rb
/opt/local/lib/ruby/gems/1.8/gems/actionmailer-2.0.1/lib/action_mailer/v
endor/tmail-1.1.0/tmail/base64.rb
/opt/local/var/macports/software/ruby/1.8.5_1/opt/local/lib/ruby/1.8/bas
e64.rb
/opt/local/var/macports/software/ruby/1.8.5_1/opt/local/lib/ruby/1.8/xml
rpc/base64.rb
/opt/local/var/macports/software/ruby/1.8.6_0/opt/local/lib/ruby/1.8/bas
e64.rb
/opt/local/var/macports/software/ruby/1.8.6_0/opt/local/lib/ruby/1.8/xml
rpc/base64.rb
/usr/lib/ruby/1.8/base64.rb
/usr/lib/ruby/1.8/xmlrpc/base64.rb


un "manuel" :

http://ruby-doc.org/stdlib/libdoc/base64/rdoc/index.html

--
Une Bévue
Avatar
SAM
Une Bévue a écrit :
SAM wrote:

Hop! dans la boite fourre-tout à malices :-)



petite info : base64 est inclus dans la standard lib the ruby ;-)



tout est servi sur un plateau alors ?

dommage : je ne sais me servir de ruby.

chez moi :

$ locate base64.rb



Ben ... chez moi :

/usr/lib/ruby/1.8/base64.rb
/usr/lib/ruby/1.8/xmlrpc/base64.rb

ça fait pôvret par rapport à chez toi ...


un "manuel" :

http://ruby-doc.org/stdlib/libdoc/base64/rdoc/index.html



Oui, peut-être qu'un petit manuel pourrait aider ;-)

--
sm
Avatar
Pierre Goiffon
SAM wrote:
je sais qu'il exisste une méthode pour placer dans du html, une image
sous forme de data par exemple, comme ceci :
<A HREF="http://www.framasoft.net/mot17.html" ADD_DATE="1141644991"




(...)
ID="rdf:#$2xvhM3">Mac OS X - Logiciels Libres - Framasoft</A>





Je crois comprendre (mais je peux me tromper ?) que le but serait une
récupération (automatique) via un shell (Ruby ?) de tout un tas de
choses tournant sur Mac (et +/- livrées avec les machines) pour les
faire s'afficher dans Safari.

Il semblerait qu'Yvon veuille s'attaquer à la récupération des données
stockées par le Carnet d'Adresses (dont des images).



Woaa, j'applaudis milles fois Stéphane tes dons de déduction ! J'étais
loin de me douter de tout ça :D
Avatar
unbewusst.sein
SAM wrote:


Oui, peut-être qu'un petit manuel pourrait aider ;-)



j'ai testé :

require "base64"

def get_format( fi )
return IO.popen( "/usr/bin/sips -g format "#{fi}"" ).readlines[ 1
].chomp.gsub( /s+format:s+([a-zA-Z]*)$/, '1' )
end
def base64_encode_contents( h, label, fi )
lines = ""
IO.foreach( "#{fi}" ) { | line | lines << line }
h[ label ] = "data:image/#{get_format( fi )};base64,#{Base64.encode64(
lines.chomp )}"
end
def data_image( h, ab_img_dir )
Dir.glob( "#{ab_img_dir}/*" ).each do | fi |
fbn = File.basename( fi )
if ( File.ftype( fi ) === "file" ) && !( /.*.[a-zA-Z]{3,4}$/ == fbn )
base64_encode_contents( h, fbn, fi )
end
end
end

fi l'absolute path du fichier...


utilisation :
ab_img_dir = "/Users/yt/Library/Application Support/AddressBook/Images"
base64_dir = "/Users/yt/work/RubyCocoa/AB2Html/base64"
person = "8CB789F7-BC37-4FDF-9777-8C0781A023C8"
company = "50897E70-4E84-4B19-BB2B-D98EED91C2A3"
person_fi = "#{base64_dir}/#{person}"
company_fi = "#{base64_dir}/#{company}"
data_imgs_h = { }
base64_encode_contents( data_imgs_h, "Person", person_fi )
base64_encode_contents( data_imgs_h, "Company", company_fi )
data_image( data_imgs_h, ab_img_dir )


html_fi = "/Users/yt/work/RubyCocoa/AB2Html/map/image_data.html"
html = "<html><body>"
data_imgs_h.each do | uid, data_img |
html << "<img src='#{data_img}' />#{uid}<br />"
end
html << "</body></html>"

File.open( html_fi, File::WRONLY|File::TRUNC|File::CREAT, 0666 ) { | f |
f.puts html }

`open "#{html_fi}"`

un petit essai : <http://thoraval.yvon.free.fr/AB2Html/image_data.html>

le fichier (596 k) est + lourd que l'ensemble des images en jpeg...

mais le fichier comporte des images en tif et les images ne sont pas
"scalées" aux dimesions utilisées dans le html :

img.floatleft {
float: left;
margin: 20px 0px 10px 20px;
padding: 2px;
}
img.reduced {
width: 24px;
height: 24px;
border: 0px;
margin-right: 15px;
vertical-align: middle;
}
j'avoue ne + savoir ce qui donne les dimensions de l'image ("floatleft")
non réduite...

capture écran de mon carnet d'adresse en html :
http://thoraval.yvon.free.fr/AB2Html/AB2Html_closed.jpg
http://thoraval.yvon.free.fr/AB2Html/AB2Html_open.jpg


pré-visualisation des thèmes sur un exemple "bison" :
http://thoraval.yvon.free.fr/AB2Html/themes/Gradiant%20Green/index.html

je ne sais si les noms de dossier accentués "passent" sur free :
problème avec le thème "Défaut"...
--
Une Bévue
Avatar
SAM
Une Bévue a écrit :

un petit essai : <http://thoraval.yvon.free.fr/AB2Html/image_data.html>

le fichier (596 k) est + lourd que l'ensemble des images en jpeg...



Je n'ai d'affiché que 2 photos dans Fx,
ça a l'air d'aller dans Safari 2.03.

Ha! non!
y a pas ma trombine ! ;-)

mais le fichier comporte des images en tif et les images ne sont pas
"scalées" aux dimesions utilisées dans le html :



Oui, en effet, il n'y a pas de css dans l'exemple :-)

img.floatleft {
float: left;
margin: 20px 0px 10px 20px;
padding: 2px;
}
img.reduced {
width: 24px;
height: 24px;
border: 0px;
margin-right: 15px;
vertical-align: middle;
}
j'avoue ne + savoir ce qui donne les dimensions de l'image ("floatleft")
non réduite...



c'est là où 'width' et 'height' sont précisés je présume ?

Si tu veux absolument utiliser float:left;
mets ça dans ta page de démo :
<style type="text/css">
img {
float: left;
margin: 20px 0px 10px 20px;
padding: 2px;
width: 60px;
border: 0px;
margin-right: 15px;
vertical-align: middle;
}
br { clear: left; }
</style>

mais bon, ceci devrait suffire :
<style type="text/css">
img {
margin: 20px;
width: 60px;
}
</style>

pré-visualisation des thèmes sur un exemple "bison" :
http://thoraval.yvon.free.fr/AB2Html/themes/Gradiant%20Green/index.html

je ne sais si les noms de dossier accentués "passent" sur free :
problème avec le thème "Défaut"...



non ça passe pô.

--
sm
1 2 3