Faire une image transparente 448 * 448

10

Ceci est un défi simple.

La tâche consiste à écrire du code qui génère une image carrée de 448 * 448 avec une transparence à 100%. La sortie doit suivre les règles d'image standard .

Anush
la source
7
Qu'est-ce qui empêche les gens de soumettre une réponse de 0 octet qui "génère" une image transparente (invisible) à l'écran?
12Me21
9
@ 12Me21 Serait-ce 448 * 448?
Anush
2
Est-ce une parodie (ou du moins une inspiration) d'une question fermée sur stackoverflow?
Foon
2
Quelle est la particularité de 448 px?
dan04
1
@Foon Certainement pas une parodie mais certainement j'étais assez intéressé pour demander SO donc avant de réaliser que ce serait beaucoup plus amusant ici.
Anush

Réponses:

28

Imagemagick dans une coquille, 35

convert -size 448x448 xc:none a.png

Est-ce permis?

vityavv
la source
5
Bash, je suppose? C'est ce que j'ai utilisé lorsque je l'ai testé. Tout shell POSIX devrait fonctionner?
vityavv
3
Fonctionne également sous Windows (si ImageMagick est dans le CHEMIN avant \windows\system32).
CL.
1
Sous Windows, ImageMagick n'est pas fourni avec l' convertoutil, car le nom se heurte à l'utilitaire système. Vous courez à la magick convert ... place.
n0rd
1
@SztupY convertfait partie d'ImageMagick, donc l'appeler son propre langage ne fonctionnerait pas.
vityavv
1
c'est une commande propre. Vous pouvez simplement dire que la langue que vous utilisez est ImageMagick Convert. Cela vaut peut-être la peine d'ouvrir une méta à ce sujet
SztupY
15

APL (Dyalog Unicode) , 11 octets SBCS

Programme complet. Imprime un tableau de 448 x 448 x 4 représentant une image rgba de 448 x 448.

448 448 40

Essayez-le en ligne!

est r eshape

Adam
la source
Je ne connais pas du tout APL, mais je suppose qu'il n'a pas de doublon pour jouer au golf 448 448?
Kevin Cruijssen
448 * 448 = 200704, donc ne pouvez-vous pas remplacer l'espace séparé 448 448 par 200704, économisant 1 octet?
NaCl
1
@NaCl Dans ce cas, pourquoi ne pas simplement multiplier cela par 4 et avoir 802832p0comme réponse?
John Hamilton
@NaCl Parce que ce n'est pas l'un des formats d'image valides selon les règles par défaut .
Adám
@JohnHamilton Pour la même raison que ma réponse à NaCl .
Adám
8

Allez, 70

import i"image";func a()i.Image{return i.NewRGBA(i.Rect(0,0,448,448))}

Jamais vu de golf à Go auparavant. Définit une fonction appelée a qui produit l'image

vityavv
la source
2
Appelez ça un Go-lf.
Skyler
6

JavaScript (ES6), 74 69 octets

f=
(_=document.createElement`canvas`)=>_.toDataURL(_.height=_.width=448)
;document.write(f());

Renvoie une image PNG encodée sous forme de données: URL appropriée, par exemple pour la définition en tant srcque HTMLImageElement. Edit: 3 octets enregistrés grâce à @Shaggy et 2 octets supplémentaires grâce à @Arnauld.

Neil
la source
1
71 octets ?
Shaggy
2
document.createElement`canvas` devrait fonctionner, économisant 2 octets supplémentaires.
Arnauld
1
Si createelement est valide, voir document.body et utiliser le fait qu'un id devienne une variable serait-il valide? Empilez également les extraits de
code
1
Pourriez-vous ajouter quelque chose comme d=documenten haut et remplacer documentpar d? Devrait enregistrer ~ 5 caractères.
Luke
1
@Luke The document.writen'est qu'une partie de l'extrait de pile, pas une partie de la fonction, donc cela ne compte pas de toute façon.
Neil
6

Java 8, 23 (ou 20) octets

v->new int[448][448][4]

Renvoie un tableau 3D de 448x448x4 0s.

Essayez-le en ligne.

Explication:

v->  // Method with empty unused parameter and 3D integer-array as return-type
  new int[448][448][4]
     // Create a 3D array of dimensions 448 by 448 by 4 (filled with 0s by default)

v->new int[448][448]

Renvoie une matrice 448x448 de 0.

En Java, les valeurs RGBA peuvent être représentées par un entier . L'hexadécimal 0x00000000représenterait respectivement le 00rouge, le vert, le bleu et l'alpha. Et 0x00000000est égal à l'entier 0.

Essayez-le en ligne.

Kevin Cruijssen
la source
Ah ah ah, j'adore :-) Cela ne fonctionne-t-il pas simplement v->new int[448][448]? Parce qu'une couleur peut être représentée avec un entier (RGBA) en Java.
Olivier Grégoire
@ OlivierGrégoire Non, j'ai besoin des quatre 0 par 448x448 pixel pour les valeurs RBGA. EDIT: Hmm .. un entier est-il 0-255une valeur RBGA valide? Je sais que c'est une valeur RGB valide, mais aussi RGBA? Je n'utilise presque jamais d'images en Java, donc je ne les connais pas trop. J'ai simplement basé mes 4 0 intérieurs sur d'autres réponses.
Kevin Cruijssen
Oui, quatre 0 comme (en hexadécimal) 0x00000000qui tiennent sur un int. Les 2 premiers chiffres hexadécimaux sont l'alpha, les 2 suivants sont le rouge, les 2 suivants sont le vert, les 2 derniers sont le bleu, vous n'avez donc besoin que d'un entier. Voir BufferedImage.TYPE_INT_ARGB . Vous avez 4 valeurs, résumées en un seul entier. Et 0x00000000est égal à 0.
Olivier Grégoire
Je pense que c'est la première fois en 2 ans ici que je vois Java réellement compétitif!
Shaggy
@Shaggy Avec ces langues de golf autour d' elle est toujours pas concurrentiel .. D' ailleurs, j'ai eu quelques autres réponses Java semi-compétitifs dans le passé, comme celui - ci , ou celui - ci qui a été gagner jusqu'à ce que le Bash a montré (et R golfed son réponse).
Kevin Cruijssen
6

Java 8


Enregistrement de l'image dans un fichier avec chemin s, 101 octets

s->javax.imageio.ImageIO.write(new java.awt.image.BufferedImage(448,448,2),"png",new java.io.File(s))

Essayez-le en ligne ... en quelque sorte en

retournant l'image tamponnée, 46 octets

v->new java.awt.image.BufferedImage(448,448,2)

Enregistrement de l'image dans le fichier f, 83 octets

f->javax.imageio.ImageIO.write(new java.awt.image.BufferedImage(448,448,2),"png",f)

Dumping PNG vers STDOUT, 92 octets (merci ASCII uniquement!)

v->javax.imageio.ImageIO.write(new java.awt.image.BufferedImage(448,448,2),"png",System.out)

Essayez-le en ligne!
Merci à Kevin d'avoir économisé un octet pour les deuxième et quatrième solutions!

Benjamin Urquhart
la source
2
Voulez-vous dire vide ou transparent?
Anush
1
Écrivez simplement à stdout
ASCII uniquement
1
@ ASCII uniquement Alors, écrivez un tableau vide (rempli de zéros) 448 * 448 * 4 sur stdout? Quoi qu'il en soit, j'aime l'idée de créer un fichier PNG réel.
Benjamin Urquhart
1
Vous pouvez jouer au golf ()->dans deux de vos réponses v->, car il est autorisé d'avoir une entrée vide inutilisée (pour laquelle j'utilise personnellement Void). Votre dernier TIO serait alors celui-ci .
Kevin Cruijssen
1
@NahuelFouilleul parce que je veux sortir une image réelle et non pas une représentation pixel par pixel
Benjamin Urquhart
6

05AB1E , 12 10 9 octets

448LDδ4Å0

Essayez-le en ligne.

Ou bien:

¾4Ž1ÂDиии

Essayez-le en ligne.

-2 octets grâce à @Emigna .
-1 octet grâce à @Adnan .

Génère une liste 3D de 448x448x4 de 0.

Explication:

448LD      # Push a list in the range [1,448], and duplicate it
     δ     # Outer product; apply the following double-vectorized:
      4Å0  #  Push a list of 4 0s: [0,0,0,0]
           # (and output the result implicitly)

  Ž1ÂD     # Push compressed integer 448, and duplicate it
      и    # Create a list of 448 times 448
 4     и   # Transform it into a list of 448 times 448 times 4
¾       и  # Transform it into a list of 448 times 448 times 4 times 0
           # (and output the result implicitly)

Voir cette réponse 05AB1E de mes (section Comment compresser les grands entiers? ) Pour comprendre pourquoi Ž1Âest 448.

Kevin Cruijssen
la source
5

Traitement, 66 octets

PGraphics g=createGraphics(448,448);g.beginDraw();g.save("a.png");
dzaima
la source
5

Python 2.7, 17 octets (22 avec impression)

[[[0]*4]*488]*488

Avec impression:

print[[[0]*4]*488]*488

Comme variable:

x=[[[0]*4]*488]*488

Comme un tableau de RGBA est autorisé, c'est ce que j'ai créé ci-dessus, par défaut à tous les 0 - ce qui signifie noir, mais totalement transparent.

Essayez-le en ligne!

Distributeur Snaddyvitch
la source
Encore une fois, avec celui-ci, multipliez simplement manuellement et vous obtenez [0]*802816cela devrait également fonctionner.
John Hamilton
1
@JohnHamilton Corrigez-moi si je me trompe, mais je pense qu'il faudrait que ce soit un tableau 3D (un tableau de rangées de pixels) c'est-à-dire un tableau [pixel x coord] [pixel y coord] [r / g / b / a]
Distributeur Snaddyvitch
1
Pas tout à fait aussi concis mais voici une alternative qui obtient les zéros dans un tableau numpy ... np.zeros ([4] + [448] * 2)
P. Hopkinson
5

Gelée , 8 octets

448ṁ4¬¥þ

Un lien niladique qui produit une matrice RGBA de 448 x 448 pixels noirs transparents.

Essayez-le en ligne!

Comment?

448ṁ4¬¥þ - Link: no arguments
448      - 448
       þ - outer-product with: -- i.e. [[f(x,y) for y in [1..448]] for x in [1..448]]
      ¥  -   last two links as a dyad:
   ṁ4    -     mould like [1,2,3,4]  -- e.g. x=7 -> [7,7,7,7]
     ¬   -     logical NOT                       -> [0,0,0,0]
Jonathan Allan
la source
5

HTML, 25 octets

Est-ce valable?

<svg height=448 width=448

Testez-le ( backgroundappliqué avec CSS pour pouvoir le "voir")

Hirsute
la source
Je ne crois pas que ce soit valide, car écrire <svg height=448 width=448dans un fichier html et l'ouvrir produit un vide <body>. Cependant , avec la pénalité de 1 octet, si vous écrivez <svg height=448 width=448>, cela produit un <body>avec une image SVG vide.
Ismael Miguel
@IsmaelMiguel, nous définissons les langues par leur interprète plutôt que par leur implémentation (prévue). Qu'un interprète existe (dans ce cas CodePen) qui nous permet d'omettre la fermeture >signifie que cela est, en effet, valide, en ce qui concerne le balisage.
Shaggy
1
Codepen ajoute du code HTML supplémentaire pour le faire fonctionner. Il ajoute <!DOCTYPE html>, <html>, <head>, <style>, <script>et tout va à la <body>. Une partie du code supplémentaire est nécessaire pour produire la sortie souhaitée. Vous pouvez voir que le code résultant est analysé comme <svg height="448" width="448" < body></svg>, car il écrit <svg height=448 width=448 </body>dans l'iframe. En tant que tel, je pense toujours que ce n'est pas valable.
Ismael Miguel
5

Rouille - 206 201 168 octets

use std::{io::Write,fs::File};fn main(){let mut v=vec![0,0,2,0,0,0,0,0,0,0,0,0,192,1,192,1,32,0];v.extend(vec![0u8;802816]);File::create("o.tga").unwrap().write(&v);}

Cela écrit un fichier o.tga réel et lisible, sans bibliothèque ni fonction intégrée, en utilisant le format binaire TGA selon http://paulbourke.net/dataformats/tga/ , en codant en dur la largeur et la hauteur dans l'en-tête du fichier binaire.


-5 octets raccourcir le nom de fichier, fixer la taille img, @ ASCII uniquement

Don Bright
la source
faut-il cependant l'imprimer dans un fichier: P
ASCII uniquement
doit-il même être en 2 dimensions? Je pourrais simplement dire [0; 444 * 444 * 4]; et disons que j'ai créé une image transparente 444x444. je le rend intéressant.
Don Bright
bien fonctionnerait aussi acomme nom de fichier non. btw c'est 448 * 448 pas 444 * 444 donc c'est invalide
ASCII uniquement
oups, ha ha merci
don bright
pour le rendre encore plus intéressant, encode longueur exécuter: P (données d'image doivent être [255,0,0,0,0]6272 fois ( [0,0,0,0]128 fois, répété 6272 fois) type d'image serait alors. 10pas 2encore mieux, colormap pour le codage de longueur d'exécution plus court (. 0,0,0,0-> 0)
ASCII uniquement
4

C # (Visual C # Interactive Compiler) , 48 octets

_=>(Enumerable.Repeat((0,0,0,0),200704),448,448)

Apparemment, la sortie [1D array of pixels, width, height]est correcte, donc cela génère un tuple de `(IEnumerable de pixels, largeur, hauteur).

Essayez-le en ligne!

C # (Visual C # Interactive Compiler) , 58 octets

_=>Enumerable.Repeat(Enumerable.Repeat((0,0,0,0),448),448)

La matrice d'origine renvoyant la réponse.

Étant donné que les règles d'E / S d'image permettent la sortie sous forme de matrice de valeurs RVB, cette soumission génère une matrice de valeurs RVBA, représentée par des tuples à quatre valeurs, toutes étant égales à 0.

Essayez-le en ligne!

Incarnation de l'ignorance
la source
4

PHP, 192 octets

Malheureusement, PHP aspire un peu dans cet aspect car il nécessite beaucoup de code. Mais là encore, où PHP n'est pas nul.

$i=imagecreatetruecolor(448,448);imagesavealpha($i,true);$b=imagecolorallocatealpha($i,0,0,0,127);imagefill($i,0,0,$b);imagepng($i,'i.png');header('Content-type: image/png');readfile('i.png');

Non golfé:

$i=imagecreatetruecolor(448,448);         // Create a new image with a set width
imagesavealpha($i,true);                  // Tell PHP to save alphachannels on that image
$b=imagecolorallocatealpha($i,0,0,0,127); // set the actual transparency values
imagefill($i,0,0,$b);                     // Fill the image with the color saved above
imagepng($i,'i.png');                     // Save the file as PNG
header('Content-type: image/png');        // Set the content type for the browser
readfile('i.png');                        // Read the file and output it

Évidemment, si vous voulez simplement le créer sans le sortir, vous pouvez omettre les commandes header()et readfile(). Pourtant, c'est idiotement long.

YU NO WORK
la source
1
du côté positif, c'est l'une des réponses les plus «lisibles» qui indique exactement ce qu'elle fait
don bright
@donbright Pas vraiment le but de jouer au code. ; P Cependant, il n'y a pas d'autre moyen de le faire en PHP, je suppose, à moins que je ne fasse écho à du HTML.
YU NO WORK
@YUNOWORK Selon les règles, vous pouvez exporter un tableau. Vous pouvez utiliser '<?php return '.var_export(array_fill(0,952576,0),1).';';pour exporter le tableau de manière exécutable. vous pouvez faire php -f image.php > array.php, et ailleurs, vous pouvez faire $array = include('array.php');pour avoir à nouveau un tableau utilisable. Mais je ne sais pas si elle est valide, alors je vous la donne à ajouter comme alternative. Ou même un <?=json_encode(array_fill(0,952576,0));.
Ismael Miguel
Par ailleurs, truepeut être remplacé par 1, pour économiser 3 octets. En lisant la documentation de imagepng(), vous pouvez simplement le faire header('Content-type: image/png');imagepng($i);. Je crois que vous pouvez également remplacer $b=imagecolorallocatealpha($i,0,0,0,127);imagefill($i,0,0,$b);par, imagefill($i,0,0,imagecolorallocatealpha($i,0,0,0,127));mais ne me citez pas à ce sujet.
Ismael Miguel
Je viens de tester et de <? imagecolorallocatealpha($i=imagecreate(448,448),0,0,0,127);header('Content-type: image/png');imagepng($i);produire une image transparente (109 octets). Envoie automatiquement l'image au navigateur / sortie standard et tout.
Ismael Miguel
4

Python 3.7 - Importé PIL, 30 octets

Image.new("LA",[448]*2).show()

Cela nécessite une importation mais a l'avantage de créer et d'afficher un fichier image réel plutôt qu'un tableau vide abstrait.

Explication:

from PIL import Image
Image.new(    // create a new image
mode="LA"     // select LA colour mode, this is grey-scale plus an alpha channel
size=[448]*2  // size argument needs to be a 2D tuple, [448*2] is a better golf shot than (448,448)
color=0       // populates the image with the specified colour, helpfully preset to transparent
).show()      // display the image object

Image.show () ouvrira l'image dans votre programme d'image par défaut. Dans mon cas, cela ouvre un fichier bitmap temporaire dans la visionneuse de photos Windows, mais les résultats peuvent varier. On peut dire que c'est de la triche puisque la représentation bitmap ne contient aucune transparence

Variations ...

Image.new("LA",[448]*2)                 // 24 bytes but doesn't open image
Image.new("LA",[448]*2).show()          // 30 bytes, shows you a bitmap
Image.new("LA",[448]*2).save("x.png")   // 37 bytes, saves image to disk
P. Hopkinson
la source
1
Si vous ne comptez pas votre importation, vous devez indiquer votre langue comme Python 3.7 - PIL importé ou quelque chose de similaire. De plus, dans votre explication, vous capitalisez Import.
Jonathan Frech
Merci, corrigé. Dois-je donner ma réponse en 24 octets, 30 ou 37?
P. Hopkinson
Le nombre d'octets dépend de la langue que vous utilisez. Pour l'instant, votre soumission prend 30 octets dans le langage Python 3 avec PIL importé . Si vous écriviez en Python 3 , ce serait probablement plus long. Bien sûr, si vous utilisez le langage Python 3 avec tout l'espace de noms PIL importé , votre réponse serait de new("LA",[448]*2).show()26 octets.
Jonathan Frech
Merci beaucoup d'avoir soumis du code que je peux réellement exécuter et qui produit une sortie que je peux tester!
Anush
4

MATLAB, 31 octets

imwrite(nan(448),'.png','tr',1)

Crée une matrice de NaNvaleurs 448 x 448 , puis les utilise imwritepour les enregistrer dans un fichier PNG nommé '.png'et définit la transparence sur 1, la rendant transparente. Le 'Transparency'nom du paramètre peut être abrégé 'tr'car MATLAB permet une correspondance de chaîne partielle des noms de paramètres tant que la version raccourcie est unique parmi les paramètres disponibles.

Suever
la source
attendez, pourquoi 443 ??
ASCII uniquement
@ Gros doigts ASCII uniquement :)
Suever
O_o qui a été une réponse incroyablement rapide
ASCII uniquement
4

dzaima / APL + APLP5 , 18 16 octets

{P5.img⍴∘0,⍨448}

Fonction qui produit un objet image qui peut être dessiné à l'écran (sans effet) ou reconverti en valeurs de pixels.

-2 grâce à ngn !

dzaima
la source
cela fonctionnerait-il? {P5.img⍴∘0,⍨448}
ngn
@ngn ça le serait, merci!
dzaima
3

Gelée , 10 9 octets

x4Wẋ448Ɗ⁺

Essayez-le en ligne!

Génère une matrice 448x448x4

Merci à @JonathanAllan d'avoir enregistré un octet.

Nick Kennedy
la source
1
peut être
Jonathan Allan
3

Rouge , 33 octets

a: make image![448x448 0.0.0.255]

Par défaut, l'opacité est entièrement opaque (0)

Voici comment l'utiliser / un programme complet /:

Red [ ]
a: make image! [ 448x448 0.0.0.255 ]
view [ image a ]
Galen Ivanov
la source
3

MathGolf , 10 octets

º4♦7*_ß{.a

Essayez-le en ligne!

Explication

º            push [0]
 4           push 4
  ♦7*        push 64*7=448
     _       duplicate TOS
      ß      wrap last three elements in array (stack is now [[0], [4, 448, 448]])
       {     foreach in [4, 448, 448]
        .    repeat TOS x times
         a   wrap TOS in array

Cette méthode permet d'économiser 1 octet par rapport au "standard" ♦7*_4º*a*a*

maxb
la source
3

JavaScript (Node.js) , 39 octets

_=>[w=448,w,Array(w*w).fill([0,0,0,0])]

Apparemment, la sortie [height, width, 1d array of RGBA values]est correcte.

Essayez-le en ligne!

-3 octets grâce à @Arnauld

Incarnation de l'ignorance
la source
invalide ... c'est une liste de chaînes
ASCII uniquement
Vous pouvez également sortir[1D array of pixels, width, height]
ASCII uniquement
@ ASCII-only Fixed now
Embodiment of Ignorance
41 octets ou 39 octets si nous pouvons sortir [width, height, array].
Arnauld
3

SmileBASIC, 27 octets

DIM A[448,448]SAVE"DAT:I",A

Enregistre un tableau bidimensionnel 448x448 rempli de 0 dans un fichier nommé DAT:I(ce qui est plus court que la définition d'une fonction qui renvoie le tableau, en quelque sorte)

Les formats standard (utilisés par toutes les fonctions graphiques) pour les couleurs dans SmileBASIC sont 32 bits ARGB et 16 bits 5551 RGBA, et 0sont transparents dans les deux.

12Me21
la source
Qu'est-ce qui rend ce transparent au lieu du noir?
pipe
1
Les couleurs sont au ARGBformat 4 octets (couramment utilisées dans Smilebasic), 0x00000000Alpha = 0, Rouge = 0, Vert = 0, Bleu = 0. Le noir le serait 0xFF000000.
12Me21
bravo à SmileBasic pour avoir utilisé un format d'image RAW lol
don bright
Je me plaindrais de la technicité que ce n'est pas un format d'image car ce n'est pas le cas GRPmais je vais le laisser partir car les données réelles stockées sont les mêmes.
snail_
@snail_ Il s'agit simplement de produire une matrice de pixels, sans utiliser un format d'image spécifique.
12Me21
3

Raccourcis ScPL pour iOS , 98 octets

Text"R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
Base64Encode Decode
ResizeImage 448

Capture d'écran

Lien iCloud de raccourci

Prend un gif transparent 1x1 encodé en base64 et le redimensionne

pfg
la source
c'était ... bizarre ... quel est le lien icloud auquel je viens de me rendre? ?
don bright
@donbright lorsque vous partagez un raccourci à partir de l'application de raccourcis, il crée ce lien
pfg
2

Jstx , 24 octets

♪☺ü@/øP♦£Q)%)£Q◄úæD)%)£Q

Explication

♪☺ü@ # Push literal 448
/    # Store the first stack value in the a register.
ø    # Push literal 0
P    # Push four copies of the first stack value.
♦    # Push literal 4
£Q   # Push stack values into a list of the size of the first stack value starting with the second stack value.
)    # Push the value contained in the a register.
%    # Push the second stack value the absolute value of the first stack value times.
)    # Push the value contained in the a register.
£Q   # Push stack values into a list of the size of the first stack value starting with the second stack value.
◄úæ  # Push literal \n
D    # Push the sum of the second and first stack values.
)    # Push the value contained in the a register.
%    # Push the second stack value the absolute value of the first stack value times.
)    # Push the value contained in the a register.
£Q   # Push stack values into a list of the size of the first stack value starting with the second stack value.

Essayez-le en ligne!

Quantum64
la source
2

C ++, SFML, 131 octets

#include <SFML/Graphics.hpp>
void f(){sf::Image i;i.create(448,448);i.createMaskFromColor(sf::Color::Black);i.saveToFile("a.png");}
HatsuPointerKun
la source
2

JavaScript + HTML, 56 octets

location=C.toDataURL()
<canvas id=C width=448 height=448>

Un clic sur "Exécuter l'extrait de code" générera un PNG transparent de 448 x 448 dans un IFRAME. Vous pouvez ensuite cliquer avec le bouton droit sur "Enregistrer l'image sous ..." pour la télécharger sur votre ordinateur.

dana
la source