Ce code ramène un maximum de 20 images sur base d’un tag. Il affiche ensuite ces images en proportion dans la fenêtre de l’application.
Voici une version pour Processing 1.5.1
int parcoureur=0;
PImage lim;
PImage[] flickr_images;
void setup() {
size(600, 600);
String[] imgs = getimgflickr("bruxelles");
//println(imgs); // pour controler les liens
flickr_images=new PImage[imgs.length];
for (int i=0;i<imgs.length;i++) {
flickr_images[i] = requestImage(imgs[i]); // request plutôt que
}
println("nombre d'images " + imgs.length);
delay(1000); // laisser un petit délai au chargement
}
void draw() {
background(0);
float[] dims=dimensions(flickr_images[parcoureur]);
image(flickr_images[parcoureur], 0, 0, dims[0], dims[1]);
parcoureur++;
if (parcoureur > (flickr_images.length-1)) {
parcoureur=0;
}
delay(1000);
}
// recherche d'images sur base du tag
String[] getimgflickr(String letag) {
String[] names_ok= {};
String rest = "http://api.flickr.com/services/feeds/photos_public.gne";
rest += "?tags=" + letag;
// get payload
XMLElement xml = new XMLElement(this, rest);
XMLElement[] desc = xml.getChildren("entry");
for (int i = 0; i < desc.length; i++) {
// selectionner les tags contenant les liens des images
XMLElement[] e = desc[i].getChildren("link");
String lurl = e[1].getStringAttribute("href");
// verifier que c'est une image
String[] m = match(lurl, ".jpg|.gif|.png");
if (m!= null) {
names_ok=append(names_ok, lurl); // ajouter à la liste
}
}
return names_ok;
}
// une fonction met l'image en proportion dans la fnetre
float[] dimensions(PImage limage) {
float[] taille=new float[2];
int largeur=limage.width;
int hauteur=limage.height;
if (largeur > hauteur) {
// image horizontale
// adapter la hauteur à la largeur
taille[0]=largeur/(hauteur*1.0/height);
taille[1]=height; // la taille verticale est la hauteur de la fenêtre
}
else {
// image verticale
// adapter la hauteur à la largeur
taille[0]=width; // la taille horizontale est la largeur de la fenêtre
taille[1]=hauteur/(largeur*1.0/width);
}
return taille;
}
Voici une version pour Processing 2 (les fonctions XML ont été modifiées)
// ramener des images de Flickr par l'api publique
// pas besoin de clé
int parcoureur=0;
PImage lim;
PImage[] flickr_images;
void setup() {
size(600, 600);
String[] imgs = getimgflickr("portrait");
println(imgs); // pour controler les liens
flickr_images=new PImage[imgs.length];
for (int i=0;i<imgs.length;i++) {
flickr_images[i] = requestImage(imgs[i]); // request plutôt que
}
println("nombre d'images " + imgs.length);
delay(1000); // laisser un petit délai au chargement
}
void draw() {
background(0);
float[] dims=dimensions(flickr_images[parcoureur]);
image(flickr_images[parcoureur], 0, 0, dims[0], dims[1]);
parcoureur++;
if (parcoureur > (flickr_images.length-1)) {
parcoureur=0;
}
delay(1000);
}
// recherche d'images sur base du tag
String[] getimgflickr(String letag) {
String[] names_ok= {};
String rest = "http://api.flickr.com/services/feeds/photos_public.gne";
rest += "?tags=" + letag;
// get payload
XML xml = loadXML(rest);
XML[] desc = xml.getChildren("entry");
for (int i = 0; i < desc.length; i++) {
// selectionner les tags contenant les liens des images
XML[] e = desc[i].getChildren("link");
String lurl = e[1].getString("href");
// verifier que c'est une image
String[] m = match(lurl, ".jpg|.gif|.png");
if (m!= null) {
names_ok=append(names_ok, lurl); // ajouter à la liste
}
}
return names_ok;
}
// une fonction met l'image en proportion dans la fnetre
float[] dimensions(PImage limage) {
float[] taille=new float[2];
int largeur=limage.width;
int hauteur=limage.height;
if (largeur > hauteur) {
// image horizontale
// adapter la hauteur à la largeur
taille[0]=largeur/(hauteur*1.0/height);
taille[1]=height; // la taille verticale est la hauteur de la fenêtre
}
else {
// image verticale
// adapter la hauteur à la largeur
taille[0]=width; // la taille horizontale est la largeur de la fenêtre
taille[1]=hauteur/(largeur*1.0/width);
}
return taille;
}
void keyPressed(){
String[] imgs = getimgflickr("portrait&num=25");
println(imgs); // pour controler les liens
flickr_images=new PImage[imgs.length];
for (int i=0;i<imgs.length;i++) {
flickr_images[i] = requestImage(imgs[i]); // request plutôt que
}
}