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 couleurs 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.