Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
recherche:residence_corruption:corruption_litteraire [2019/10/01 17:52]
gweltaz
recherche:residence_corruption:corruption_litteraire [2019/10/01 18:35]
gweltaz [Le sketch Processing de présentation]
Ligne 1: Ligne 1:
-Corruption Littéraire+====== ​Corruption Littéraire ​======
  
-Lors de cette résidence j'ai voulu expérimenter la corruption sémantique de textes en remplaçant certains mots par des synonymes. Les synonymes sont récupérés dynamiquement à travers l'API du site http://​thesaurus.altervista.org. Pourquoi j'ai choisi ce site ? Ben les dictionnaires de synonymes en langue française proposant une API ne courent pas les cyber-rues, le choix a été rapide. Il faut noter que chaque API a ses propres règles de communication. Il devrait donc être possible d'​utiliser le programme de corruption de texte avec un autre dictionnaire en ligne à condition d'​adapter le programme aux règles de la nouvelle API. +Lors de cette résidence j'ai voulu expérimenter la corruption sémantique de textes en remplaçant certains mots par des synonymes. Les synonymes sont récupérés dynamiquement à travers l'API du site http://​thesaurus.altervista.org. Pourquoi j'ai choisi ce site ? Ben les dictionnaires de synonymes en langue française proposant une API ne courent pas les cyber-rues, le choix a été rapide. Il faut noter que chaque API a ses propres règles de communication. Il devrait donc être possible d'​utiliser le programme de corruption de texte avec un autre dictionnaire en ligne à condition d'​adapter le programme aux règles de la nouvelle API.\\ 
-Le programme est composé de deux modules maladroitement intégrés ensemble (ça s'est fait à la va vite sans réelle vision d'​ensemble,​ et puis il y avait une tireuse avec bière à volonté...). Le premier module, écrit en Python, se charge de récupérer les synonymes en lignes et de sauvegarder le texte corrompu dans un nouveau fichier. Le second module, en Processing (Java), fait défiler les textes à l'​écran,​ ajoute des effets de corruption graphique et fait régulièrement appel au premier module.+Le programme est composé de deux modules maladroitement intégrés ensemble (ça s'est fait à la va vite sans réelle vision d'​ensemble,​ et puis il y avait une tireuse avec bière à volonté...). Le premier module, écrit en Python, se charge de récupérer les synonymes en lignes et de sauvegarder le texte corrompu dans un nouveau fichier. Le second module, en Processing (Java), fait défiler les textes à l'​écran,​ ajoute des effets de corruption graphique et fait régulièrement appel au premier module.\\ 
 + 
 +===== Le module de corruption de texte ===== 
 +Il peut s'​utiliser de façon autonome, à condition d'​avoir installé Python3 sur votre machine.\\ 
 +N'​oubliez pas de remplacer la clé d'API du site http://​thesaurus.altervista.org par votre propre clé (après avoir crée votre compte) dans la variable ''​key''​.\\ 
 + 
 +Usage:\\ 
 +''​$ python3 textcorrupt.py //​fichier_original//​ //​fichier_de_sortie//​ [//​nombre_d'​itérations//​]''​\\
  
  
Ligne 150: Ligne 157:
     saveSynDict(syn_dict,​ synDict)     saveSynDict(syn_dict,​ synDict)
     saveFilterOut(filter_out,​ filterOut)     saveFilterOut(filter_out,​ filterOut)
 +</​code>​
 +</​panel>​
 +</​accordion>​
 +
 +===== Le sketch Processing de présentation =====
 +Le programme est disponible en téléchargement sur GitHub.\\
 +
 +J'ai recopié ici quelques passages intéressants et facilement applicables à d'​autres sketches Processing pour glitcher l'​image.\\
 +<​accordion>​
 +<panel title="​Rectangles d'​inversion de couleurs (cliquer pour afficher le code)">​
 +<code java>
 +void glitchScreen(int n) {
 +  loadPixels();​
 +  for (int i=0; i<n; i++) {
 +    int x0 = (int) random(width);​
 +    int y0 = (int) random(height);​
 +    int x1 = (int) min(x0+random(4,​ 100*12*corruptionLevel),​ width);
 +    int y1 = (int) min(y0+random(4,​ 10+4*corruptionLevel),​ height);
 +    for (int y=y0; y<y1; y++) {
 +      for (int x=x0; x<x1; x++) {
 +        pixels[x + y*width] = ~pixels[x + y*width];
 +      }
 +    }
 +  }
 +  updatePixels();​
 +}
 +</​code>​
 +</​panel>​
 +</​accordion>​
 +
 +<​accordion>​
 +<panel title="​Pixelisation de l'​écran (cliquer pour afficher le code)">​
 +<code java>
 +void pixelateScreen(int n) {
 +  loadPixels();​
 +  for (int y=0; y<​height;​ y+=n) {
 +    for (int x=0; x<width; x+=n) {
 +      for (int yy=0; yy<n; yy+=1) {
 +        for (int xx=0; xx<n; xx+=1) {
 +          pixels[min(x+xx + (y+yy)*width,​ pixels.length-1)] = pixels[x+y*width];​
 +        }
 +      }
 +    }
 +  }
 +  updatePixels();​
 +}
 +</​code>​
 +</​panel>​
 +</​accordion>​
 +
 +<​accordion>​
 +<panel title="​Décalage des canaux R et B (cliquer pour afficher le code)">​
 +<code java>
 +void rbGlitch(int n) {
 +  loadPixels();​
 +  PImage buffer = createImage(width,​ height, RGB);
 +  buffer.loadPixels();​
 +  for (int i=0; i<​pixels.length;​ i++) {
 +    buffer.pixels[i] = (pixels[i] & 0xff00ff00) +
 +      (pixels[min(pixels.length-1,​ i+n)] & 0xff0000ff) +
 +      (pixels[max(0,​ i-n)] & 0x00ff0000);​
 +  }
 +  buffer.updatePixels();​
 +  image(buffer,​ 0, 0);
 +}
 </​code>​ </​code>​
 </​panel>​ </​panel>​
 </​accordion>​ </​accordion>​
  • recherche/residence_corruption/corruption_litteraire.txt
  • Dernière modification: 2019/10/09 13:05
  • par emoc