Source: Scratch Wiki en français
Ce tutoriel vous indique comment scanner une image à différentes résolutions, et sauvegarder votre image dans différents formats.
Créer les paramètres du scan
- Résolution à scanner
(résolution)
- Début X
(début x)
- Fin X
(fin x)
- Début Y
(début y)
- Fin Y
(fin y)
- Nombre de lignes Y
(lignes)
Proposer à l'utilisateur de modifier la zone de la scène à scanner
Pour scanner la scène entière avec une résolution de 480x360 :
Quand @greenFlag est cliqué::events hat mettre [début x v] à (-240) mettre [fin x v] à (240) mettre [début y v] à (180) mettre [fin x v] à (-180) mettre [résolution v] à (1)
Pour une taille configurable, deux possibilités se présentent :
- Utiliser des barres (deux pour X, deux pour Y)
- Utiliser des variables
Dans chaque cas, l'information est stockée dans les variables concernées (début x) (fin x) (début y) (fin y)::grey
.
(début x)
soit plus petite que (fin x)
; que (début y)
soit plus grande que (lignes)
.
Créer une variable indiquant la résolution
mettre [résolution affichée v] à (regrouper (((fin x) - (début x)) / (résolution)) et (regrouper [x] et (((début y) - (fin y)) / (résolution))))
La variable (résolution affichée)
donne la taille x fois la taille y de l'image.
Scanneur
Il existe deux méthodes : obtenir les images de la scène puis scanner la scène avec ces couleurs (rapide et efficace) ; scanner la scène sans avoir cherché ses couleurs (très long et ennuyant). Le choix est vite fait.
Obtenir les images de la scène
Pour que le script suivant fonctionne, il faut créer deux costumes :
- Un qui occupe toute la scène
- Un qui fait du 1x1 pixel
définir Scanner les couleurs basculer sur le costume (scène remplie v) supprimer tous les éléments de la liste [couleurs v] mettre [i v] à (0) répéter (32) fois { répéter (32) fois { répéter (16) fois { ajouter (16) à [i v] si <couleur (i) touchée ?> alors { ajouter (i) à [couleurs v]::list }::control }@loopArrow::control ajouter (1792) à [i v] }@loopArrow::control ajouter (458752) à [i v] }@loopArrow::control
Scanner la scène
définir Scan image Scanner les couleurs::custom basculer sur le costume (scène remplie v) si <(résolution) < (1)> alors { mettre la taille à ((résolution) * (100)) de la taille initiale::looks } sinon { basculer sur le costume (2x2 pixel v) mettre la taille à ((résolution) * (100)) de la taille initiale::looks }::control basculer sur le costume (2x2 pixel v) mettre [lignes v] à (1) supprimer tous les éléments de la liste [image v] mettre y à (début y) répéter ([plafond v] de (((début y) - (fin y)) / (résolution))) fois { mettre x à (début x) répéter ([plafond v] de (((fin x) - (début x)) / (résolution))) fois { Obtenir la couleur::custom ajouter (([plafond v] de ((fin x) - (début x))) / ([plafond v] de (((fin x) - (début x)) / (résolution)))) à x }@loopArrow::control ajouter (1) à [lignes v] ajouter (#) à [image v]::list ajouter ((-1) * (([plafond v] de ((début y) - (fin y))) / ([plafond v] de (((début y) - (fin y)) / (résolution))))) à y }@loopArrow::control
Le bloc Obtenir la couleur :
définir Obtenir la couleur mettre [j v] à (1) répéter (longueur de [couleurs v]){ si <couleur (élément (j) de [couleurs v]) touchée ?>> alors { ajouter (élément (j) de [couleurs v]) à [image v]::list stop [ce script v] }::control ajouter (1) à [j v] }@loopArrow::control ajouter [erreur] à [image v]::list
Dessiner l'image dans la liste
définir Afficher l'image (x) (y) effacer tout mettre [g v] à (1) aller à x:(-240) y:(180) répéter (longueur de [image v]){ si <(élément (g) de [image v]) = [#]> alors { mettre x à (-240) ajouter ((-1) * (y)) à y } sinon { mettre la couleur du stylo à (élément (g) de [image v]) stylo en position d'écriture ajouter (x) à x relever le stylo }::control ajouter (1) à [g v] }@loopArrow::control
Ici :
- Un élément # indique un retour à la ligne
- Un autre élément indique une couleur
- Pour X et Y, entrer les valeurs de déplacement utilisées par le bloc
Scan image::custom
Exporter
.imw
Rien de plus simple ! Voir la page dédiée.
définir Sauvegarder au .imw mettre [code v] à (regrouper (résolution) et (voir DANGER)) mettre [code v] à (regrouper (code) et (regrouper (lignes) et [@])) mettre [save v] à (1) répéter (longueur de [image v]){ mettre [code v] à (regrouper (code) et (regrouper (élément (save) de [image v]) et [/])) ajouter (1) à [save v] }@loopArrow::control mettre [code v] à (regrouper (code) et [◊])
La variable "voir DANGER" a pour valeur \ (il est impossible d'afficher ce symbole dans des blocs du wiki). Une en-tête au .imw ressemblera donc à résolution\lignes@.
Il suffit de proposer à l'utilisateur avec une liste de copier le code et de le sauvegarder dans un .txt ou autre document texte.
.bmp
Sur le modèle de ce projet.
.png
Bien que nous le citions, le wiki ne connait actuellement pas de méthode pour sauvegarder au .png