"Avouons-le, les images alignées sont comme de petits cadeaux du ciel. Bienvenue, mais inattendu." - Géobits
+10000 points de réputation à celui qui remporte ce défi.
Règles:
1) Vous devez générer un programme.
2) L'entrée sera une image, mais qu'elle soit transmise sous forme de fichier ou de liste de nombres, c'est à vous de décider.
3) La sortie sera un fichier qui, une fois ouvert dans la peinture (ou similaire), montrera l'image alignée.
4) La taille du canevas sera toujours comprise entre 100 x 100 et 2000 x 2000 pixels. Ce sera toujours un rectangle, mais pas toujours un carré.
5) Pas de codage dur des images ni de magie d'URL géniale.
6) Aucune bibliothèque externe à utiliser.
Guide de centralisation (variante Joshpbarron)
Une image sera définie comme centrée si le 1er blanc (255,255,255,> 0 rgba) ou transparent (x, y, z, 0 rgba) sur un axe est à égale distance (plus ou moins 1 pixel) du bord de la toile.
Ceci peut être réalisé (et sera vérifié par) la méthode suivante.
1) Imaginez une boîte englobante autour de l'objet. (Lignes noires ajoutées pour obtenir de l'aide)
2) Déplacez l'objet jusqu'à ce que le bord de l'objet soit à égale distance du bord approprié de la toile.
3) Oubliez maintenant les lignes noires.
Contribution:
Production:
Plus d'entrées ici .
Et les sorties respectives ici .
Le représentant +10000 est un mensonge.
la source
Réponses:
Python 3,
120205 octetsEDIT : Comme l'image de sortie doit avoir la même taille que l'entrée, le script s'allonge ...
EDIT2 : Il semble que la règle 6 (pas de bibliothèque externe) ait été ajoutée après avoir répondu, donc cette réponse doit être considérée comme invalide de toute façon :(
L'ancienne version vient de recadrer l'image d'entrée:
les deux scripts lisent le nom du fichier image depuis stdin et enregistrent l'image de sortie en tant que «o.png». par exemple :
Il accepte au moins les images PNG (potentiellement avec un canal alpha) - Testé «ok» sur l'ensemble fourni par le demandeur.
... en attente de ma récompense):
la source
python3 script.py <<< s2rMqYo.png
est plus propreHTML5 + JavaScript (ES5), 515 octets
Ce nombre inclut les balises HTML car elles font partie du programme. Si vous ne comptez que le code de traitement d'image, il s'agit de 376 octets, y compris l'encapsuleur de fonction.
Contribution
Une URL vers une image.
Restrictions de sécurité
Étant donné que ce programme s'exécute dans un environnement de navigateur, seules les URL des images compatibles CORS fonctionneront. Imgur est compatible CORS.
IE 10 ne prend pas en charge CORS. Je n'ai pas encore testé dans IE 11 mais cela fonctionne dans Chrome et Firefox.
Comment courir
Production
Il sort sur le canevas de la page.
Comme il s'agit d'une application basée sur un navigateur, les restrictions de sécurité empêchent le téléchargement automatique d'un fichier, mais vous pouvez cliquer avec le bouton droit et enregistrer l'image dans Chrome et Firefox. Je n'ai pas encore testé sur IE 11.
Démo
Le code JavaScript a été supprimé de l'
script
élément et placé dans la zone appropriée pour accueillir les extraits de pile:la source
Traitement 2 -
323450L'image est lue à partir du fichier f.png dans le dossier de données de l'esquisse. Place l'image et détermine ses limites. Calcule la position correcte et remplace l'image décalée correctement.
version lisible:
Exemple de sortie:
Vous pouvez obtenir le traitement ici
la source
PImage p=loadImage("h.png");
tout en haut.color(-1)
etbackground(-1)
sont chacun 1 octet plus court quecolor(255)
etbackground(255)
respectivement. Et je pense que vous pouvez supprimer leP2D
dans l'size
appel