"Seien wir ehrlich, ausgerichtete Bilder sind wie kleine Geschenke vom Himmel. Willkommen, aber unerwartet." - Geobits
+10000 Ruf für jeden, der diese Herausforderung gewinnt.
Regeln:
1) Sie generieren ein Programm.
2) Die Eingabe ist ein Bild, es liegt jedoch an Ihnen, ob es als Datei oder als Liste von Zahlen übergeben wird.
3) Die Ausgabe ist eine Datei, die beim Öffnen in Farbe (oder ähnlichem) das Bild ausgerichtet anzeigt.
4) Die Leinwandgröße liegt immer zwischen 100 x 100 und 2000 x 2000 Pixel. Es wird immer ein Rechteck sein, aber nicht immer ein Quadrat.
5) Keine harte Kodierung von Bildern oder funky URL Magie.
6) Es dürfen keine externen Bibliotheken verwendet werden.
Leitfaden zur Zentralisierung (Joshpbarron-Variante)
Ein Bild wird als zentriert definiert, wenn das erste Weiß (255,255,255,> 0 rgba) oder Transparent (x, y, z, 0 rgba) auf einer Achse den gleichen Abstand (plus oder minus 1 Pixel) vom Rand der Leinwand hat.
Dies kann durch die folgende Methode erreicht werden (und wird durch diese überprüft).
1) Stellen Sie sich einen Begrenzungsrahmen um das Objekt vor. (Schwarze Linien zur Hilfe hinzugefügt)
2) Bewegen Sie das Objekt, bis die Kante des Objekts den gleichen Abstand von der entsprechenden Kante der Leinwand hat.
3) Vergessen Sie jetzt die schwarzen Linien.
Eingang:
Ausgabe:
Weitere Eingaben hier .
Und entsprechende Ausgänge hier .
Die +10000 Wiederholung ist eine Lüge.
quelle
Antworten:
Python 3,
120205 BytesBEARBEITEN : Da das Ausgabebild die gleiche Größe wie die Eingabe haben muss, wird das Skript länger ...
EDIT2 : Es scheint, dass die Regel 6 (keine externe Bibliothek) hinzugefügt wurde, nachdem ich geantwortet habe, daher ist diese Antwort sowieso als ungültig anzusehen :(
In der vorherigen Version wurde das Eingabebild nur zugeschnitten:
Beide Skripte lesen den Namen der Bilddatei aus stdin und speichern das Ausgabebild als 'o.png'. zum Beispiel :
Es akzeptiert mindestens PNG-Bilder (möglicherweise mit einem Alphakanal). - Auf dem vom Fragesteller bereitgestellten Set als "OK" getestet.
... warte auf meine Belohnung):
quelle
python3 script.py <<< s2rMqYo.png
Ist saubererHTML5 + JavaScript (ES5), 515 Byte
Diese Zählung schließt die HTML-Tags ein, da sie Teil des Programms sind. Wenn Sie nur den Bildverarbeitungscode zählen, sind es 376 Byte, einschließlich des Funktionswrappers.
Eingang
Eine URL zu einem Bild.
Sicherheitsbeschränkungen
Da dieses Programm in einer Browserumgebung ausgeführt wird, funktionieren nur URLs zu CORS-fähigen Bildern . Imgur ist CORS-fähig.
IE 10 unterstützt CORS nicht. Ich habe in IE 11 noch nicht getestet, aber es funktioniert in Chrome und Firefox.
Wie läuft man?
Ausgabe
Es wird auf der Leinwand auf der Seite ausgegeben.
Da dies eine browserbasierte Anwendung ist, verhindern Sicherheitsbeschränkungen das automatische Herunterladen einer Datei. Sie können jedoch mit der rechten Maustaste klicken und das Bild in Chrome und Firefox speichern. Ich habe noch nicht auf IE 11 getestet.
Demo
JavaScript-Code wurde aus dem
script
Element entfernt und in den entsprechenden Bereich eingefügt, um Stapel-Snippets aufzunehmen:quelle
Verarbeitung 2 -
323450Das Bild wird aus der Datei f.png im Datenordner der Skizze gelesen. Platziert das Bild und bestimmt seine Grenzen. Berechnet die korrekte Position und ersetzt das korrekt verschobene Bild.
lesbare Version:
Beispielausgabe:
Sie können erhalten die Verarbeitung hier
quelle
PImage p=loadImage("h.png");
ganz oben.color(-1)
undbackground(-1)
sind jeweils 1 Byte kürzer alscolor(255)
undbackground(255)
. Und ich denke, Sie können dieP2D
imsize
Anruf entfernen