Crea un'immagine trasparente 448 * 448


10

Questa è una sfida semplice.

Il compito è quello di scrivere codice che generi un'immagine quadrata 448 * 448 con trasparenza al 100%. L'output dovrebbe seguire le regole standard dell'immagine .


7
Cosa impedisce alle persone di inviare una risposta a 0 byte che "emette" un'immagine trasparente (invisibile) sullo schermo?
12Me21

9
@ 12Me21 Sarebbe 448 * 448?
Anush,

2
È una parodia di (o almeno ispirata a) una domanda chiusa su StackOverflow?
Foon,

2
Cosa c'è di speciale in 448 px?
dan04,

1
@Foon Sicuramente non è una parodia ma sicuramente ero abbastanza interessato da chiedere a SO prima di rendermi conto che sarebbe molto più divertente qui.
Anush,

Risposte:


28

Imagemagick in alcune conchiglie, 35

convert -size 448x448 xc:none a.png

È permesso?


5
Bash, immagino? Questo è quello che ho usato quando l'ho provato. Qualunque shell POSIX dovrebbe funzionare?
vityavv,

3
Funziona anche su Windows (se ImageMagick è già nel PERCORSO \windows\system32).
CL.

1
Su Windows ImageMagick non viene fornito con lo convertstrumento, poiché il nome si scontra con l'utilità di sistema. Corri magick convert ... invece.
n.

1
@SztupY the convertfa parte di ImageMagick, quindi chiamarlo nella sua lingua non funzionerebbe.
vityavv

1
è un comando proprio. Puoi solo dire che la lingua che stai usando è ImageMagick Convert. Potrebbe valere la pena di aprire una meta a riguardo
SztupY

15

APL (Dyalog Unicode) , SBCS da 11 byte

Programma completo. Stampa una matrice 448 per 448 per 4 che rappresenta un'immagine rgba 448 per 448.

448 448 40

Provalo online!

è r eshape


Non conosco affatto APL, ma immagino che non abbia un duplicato per giocare a golf 448 448?
Kevin Cruijssen,

448 * 448 = 200704, quindi non puoi sostituire lo spazio separato 448 448 con 200704, risparmiando 1 byte?
NaCl

1
@NaCl In tal caso, perché non moltiplicarlo per 4 e avere 802832p0come risposta?
John Hamilton,

@NaCl Perché non è uno dei formati di immagine validi secondo le regole predefinite .
Adám,

@JohnHamilton Per lo stesso motivo della mia risposta a NaCl .
Adám,

8

Vai, 70

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

Non ho mai visto un golf in Go prima. Definisce una funzione chiamata a che emette l'immagine


2
Chiamalo un go-lf.
Skyler

6

JavaScript (ES6), 74 69 byte

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

Restituisce un'immagine PNG codificata come un dato: URL adatto ad es. Per l'impostazione come srcdi HTMLImageElement. Modifica: 3 byte salvati grazie a @Shaggy e altri 2 byte grazie a @Arnauld.



2
document.createElement`canvas` dovrebbe funzionare, risparmiando altri 2 byte.
Arnauld,

1
Se createelement è valido, vedere document.body e usare il fatto che un id diventa una variabile sarebbe valido? Impila anche frammenti di pls
solo ASCII il

1
Potresti aggiungere qualcosa di simile d=documentin alto e sostituirlo documentcon d? Dovrebbe salvare ~ 5 caratteri.
Luca

1
@Luke Fa document.writesolo parte dello snippet dello stack, non fa parte della funzione, quindi non conta comunque.
Neil

6

Java 8, 23 (o 20) byte

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

Restituisce un array 3D di 448x448x4 0s.

Provalo online.

Spiegazione:

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]

Restituisce una matrice 448x448 di 0 secondi.

In Java, i valori RGBA possono essere rappresentati da un numero intero . L'esadecimale 0x00000000rappresenterebbe rispettivamente 00per rosso, verde, blu e alfa. Ed 0x00000000è uguale al numero intero 0.

Provalo online.


Ah ah ah, lo adoro :-) Non funziona semplicemente v->new int[448][448]? Perché un colore può essere rappresentato con un numero intero (RGBA) in Java.
Olivier Grégoire,

@ OlivierGrégoire No, ho bisogno dei quattro 0 per 448x448 pixel per i valori RBGA. EDIT: Hmm .. è un numero intero 0-255un valore RBGA valido? So che è un valore RGB valido, ma anche RGBA? Non uso quasi mai le immagini in Java, quindi non le conosco molto bene. Ho semplicemente basato i miei 4 0 interni su altre risposte.
Kevin Cruijssen,

Sì, quattro 0 come (in esadecimali) 0x00000000che si adattano a un int. Le prime 2 cifre esadecimali sono l'Alfa, le successive 2 sono il rosso, le successive 2 sono il verde, le ultime 2 sono il blu, quindi è necessario solo un numero intero. Vedi BufferedImage.TYPE_INT_ARGB . Hai 4 valori, riassunti in un intero. Ed 0x00000000è uguale a 0.
Olivier Grégoire,

Penso che questa sia la prima volta in circa 2 anni che ho visto che Java è davvero competitiva!
Shaggy

@Shaggy Con queste lingue da golf in giro non è ancora così competitivo .. Inoltre, in passato ho avuto alcune altre risposte semi-competitive Java, come questa , o questa che stava vincendo fino a quando il Bash si è presentato (e R ha giocato a golf risposta).
Kevin Cruijssen,

6

Java 8


Salvataggio dell'immagine in un file con percorso s, 101 byte

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

Provalo online ... in qualche modo

Restituzione dell'immagine bufferizzata, 46 byte

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

Salvataggio dell'immagine nel file f, 83 byte

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

Dumping PNG su STDOUT, 92 byte (grazie solo ASCII!)

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

Provalo online!
Grazie a Kevin per aver salvato un byte per la seconda e la quarta soluzione!


2
Vuoi dire vuoto o trasparente?
Anush,

1
Scrivi a stdout
solo ASCII il

1
@ Solo ASCII Quindi, scrivi un array vuoto (pieno di zeri) 448 * 448 * 4 su stdout? Ad ogni modo mi piace l'idea di creare un vero file PNG.
Benjamin Urquhart,

1
Puoi giocare ()->a golf in due delle tue risposte v->, dato che è permesso avere un input vuoto inutilizzato (per il quale io uso personalmente Void). Il tuo ultimo TIO sarebbe quindi questo invece .
Kevin Cruijssen,

1
@NahuelFouilleul perché voglio produrre un'immagine reale e non una rappresentazione pixel per pixel di una
Benjamin Urquhart

6

05AB1E , 12 10 9 byte

448LDδ4Å0

Provalo online.

o in alternativa:

¾4Ž1ÂDиии

Provalo online.

-2 byte grazie a @Emigna .
-1 byte grazie a @Adnan .

Emette un elenco 3D di 448x448x4 di 0 secondi.

Spiegazione:

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)

Vedere questo 05AB1E risposta di mine (sezione Come comprimere grandi numeri interi? ) Per capire il motivo per cui Ž1Âè 448.


5

Elaborazione, 66 byte

PGraphics g=createGraphics(448,448);g.beginDraw();g.save("a.png");

5

Python 2.7, 17 byte (22 con stampa)

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

Con stampa:

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

Come variabile:

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

Poiché è consentito un array di RGBA, questo è ciò che ho creato sopra, in modo predefinito su tutti gli 0 - che significa nero, ma totalmente trasparente.

Provalo online!


Ancora una volta, con questo, basta moltiplicare manualmente e si ottiene [0]*802816che dovrebbe funzionare anche.
John Hamilton,

1
@JohnHamilton Correggimi se sbaglio, ma credo che dovrebbe essere un array 3D (un array di righe di pixel) cioè array [pixel x coord] [pixel y coord] [r / g / b / a]
Snaddyvitch Dispenser

1
Non abbastanza conciso, ma ecco un'alternativa che inserisce gli zeri in un array intorpidito ... np.zeros ([4] + [448] * 2)
P. Hopkinson

5

Gelatina , 8 byte

448ṁ4¬¥þ

Un collegamento niladico che produce un array RGBA 448 per 448 di pixel neri trasparenti.

Provalo online!

Come?

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]

5

HTML, 25 byte

È valido?

<svg height=448 width=448

Provalo ( backgroundapplicato con CSS in modo da poterlo "vedere")


Non credo che questo sia valido, poiché scrivere <svg height=448 width=448in un file html e aprirlo produce un vuoto <body>. Tuttavia , con la penalità di 1 byte, se si scrive <svg height=448 width=448>, produce un'immagine <body>con un'immagine SVG vuota.
Ismael Miguel,

@IsmaelMiguel, definiamo le lingue dal loro interprete piuttosto che dalla loro (prevista) implementazione. L'esistenza di un interprete (in questo caso CodePen) che ci consente di omettere la chiusura >significa che ciò è, in effetti, valido, per quanto riguarda il markup.
Shaggy

1
Codepen aggiunge ulteriore codice HTML per farlo funzionare. Si aggiunge un <!DOCTYPE html>, <html>, <head>, <style>, <script>e tutto ciò che va al <body>. Parte del codice aggiuntivo è necessario per produrre l'output desiderato. Puoi vedere che il codice risultante viene analizzato come <svg height="448" width="448" < body></svg>, perché scrive <svg height=448 width=448 </body>nell'iframe. Come tale, credo ancora che non sia valido.
Ismael Miguel,


5

Ruggine - 206 201 168 byte

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);}

Questo scrive un file o.tga reale e leggibile, senza librerie o funzioni incorporate, utilizzando il formato binario TGA per http://paulbourke.net/dataformats/tga/ , codificando a fondo la larghezza e l'altezza nell'intestazione del file binario.


-5 byte abbreviano il nome file, correggono le dimensioni img, solo @ ASCII


deve essere stampato su un file però: P
ASCII il

deve anche essere bidimensionale? Potrei solo dire [0; 444 * 444 * 4]; e dire che ho creato un'immagine trasparente 444x444. lo sto rendendo interessante.
don luminoso

bene funzionerebbe anche acome nome del file non dovrebbe. tra esso è 448 * 448 non 444 * 444 quindi questo non è valido
solo ASCII

oops, ah ah grazie
don luminoso

per rendere ancora più interessante, eseguire lunghezza codificare: dati P (immagine deve essere [255,0,0,0,0]6272 volte ( [0,0,0,0]128 volte, ripetuto 6272 volte) tipo di immagine sarebbe quindi. 10non 2ancora meglio, mappa colori di lunghezza minore corsa codifica (. 0,0,0,0-> 0)
Solo ASCII il

4

C # (compilatore interattivo Visual C #) , 48 byte

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

Apparentemente l'output [1D array of pixels, width, height]è ok, quindi questo genera una tupla di `(IEnumerable di pixel, larghezza, altezza).

Provalo online!

C # (compilatore interattivo Visual C #) , 58 byte

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

La matrice originale restituisce la risposta.

Poiché le regole I / O dell'immagine consentono l'output come una matrice di valori RGB, questa presentazione genera una matrice di valori RGBA, rappresentati da tuple con quattro valori, essendo tutti 0.

Provalo online!


4

PHP, 192 byte

Purtroppo, PHP fa schifo in questo aspetto perché richiede molto codice. Ma poi di nuovo, dove PHP non fa schifo.

$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');

Ungolfed:

$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

Ovviamente, se vuoi solo crearlo senza emetterlo, puoi omettere i comandi header()e readfile(). Tuttavia, è idioticamente lungo.


1
sul lato positivo, questa è una delle risposte più "leggibili" che indica esattamente cosa sta facendo
don Bright

@donbright Non è proprio il punto di codegolfare. ; P Tuttavia, non c'è altro modo per farlo in PHP, a meno che non rispecchi un po 'di HTML.
NO NO WORK

@YUNOWORK Secondo le regole, è possibile esportare un array. È possibile utilizzare '<?php return '.var_export(array_fill(0,952576,0),1).';';per esportare l'array in modo eseguibile. puoi fare php -f image.php > array.phpe da qualche altra parte puoi fare $array = include('array.php');di nuovo un array utilizzabile. Ma non so se sia valido, quindi, te lo sto dando da aggiungere come alternativa. O anche a <?=json_encode(array_fill(0,952576,0));.
Ismael Miguel,

A proposito, truepuò essere sostituito con 1, per salvare 3 byte. Leggendo la documentazione di imagepng(), puoi semplicemente farlo header('Content-type: image/png');imagepng($i);. Credo che puoi anche sostituire $b=imagecolorallocatealpha($i,0,0,0,127);imagefill($i,0,0,$b);con, imagefill($i,0,0,imagecolorallocatealpha($i,0,0,0,127));ma non citarmi su questo.
Ismael Miguel,

Ho appena testato e <? imagecolorallocatealpha($i=imagecreate(448,448),0,0,0,127);header('Content-type: image/png');imagepng($i);produce un'immagine trasparente (109 byte). Invia automaticamente l'immagine al browser / output standard e tutto il resto.
Ismael Miguel,

4

Python 3.7 - PIL importato, 30 byte

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

Ciò richiede un'importazione ma ha il vantaggio di creare e visualizzare un file di immagine reale anziché un array vuoto astratto.

Spiegazione:

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 () aprirà l'immagine nel tuo programma immagine predefinito. Nel mio caso questo apre un file bitmap temporaneo nel Visualizzatore foto di Windows ma i risultati possono variare. Probabilmente questo è barare poiché la rappresentazione bitmap non contiene trasparenza

Variazioni ...

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

1
Se non conti l'importazione, dovresti indicare la tua lingua come Python 3.7 - PIL importato o qualcosa di simile. Inoltre, nella tua spiegazione capitalizzi Import.
Jonathan Frech,

Grazie, corretto. Devo dare la mia risposta come 24 byte, 30 o 37?
P. Hopkinson,

Il conteggio dei byte dipende dalla lingua utilizzata. A partire da ora, l'invio richiede 30 byte nella lingua Python 3 con PIL importato . Se scrivessi in Python 3 , molto probabilmente sarebbe più lungo. Naturalmente, se usi la lingua Python 3 con l'intero spazio dei nomi PIL importato , la tua risposta sarà di new("LA",[448]*2).show()26 byte.
Jonathan Frech,

Grazie mille per aver inviato il codice che posso effettivamente eseguire e che produce output che posso testare!
Anush,

4

MATLAB, 31 byte

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

Crea una matrice di NaNvalori 448 x 448 , quindi li utilizza imwriteper salvarli in un file PNG denominato '.png'e imposta la trasparenza su 1, rendendola trasparente. Il 'Transparency'nome del parametro può essere abbreviato 'tr'poiché MATLAB consente la corrispondenza parziale delle stringhe dei nomi dei parametri purché la versione abbreviata sia univoca tra i parametri disponibili.


aspetta, perché 443 ??
ASCII il

@ Fat dita solo ASCII :)
Suever

O_o quella fu una risposta follemente rapida
solo ASCII il

4

dzaima / APL + APLP5 , 18 16 byte

{P5.img⍴∘0,⍨448}

Funzione che genera un oggetto immagine che può essere disegnato sullo schermo (per nessun effetto) o riconvertito in valori di pixel.

-2 grazie a ngn !


funzionerebbe? {P5.img⍴∘0,⍨448}
ngn,

@ngn sarebbe davvero, grazie!
dzaima,


3

Rosso , 33 byte

a: make image![448x448 0.0.0.255]

L'impostazione predefinita è Opacità completamente opaca (0)

Ecco come usarlo / un programma completo /:

Red [ ]
a: make image! [ 448x448 0.0.0.255 ]
view [ image a ]

3

MathGolf , 10 byte

º4♦7*_ß{.a

Provalo online!

Spiegazione

º            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

Questo metodo consente di risparmiare 1 byte rispetto allo "standard" ♦7*_4º*a*a*



3

SmileBASIC, 27 byte

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

Salva un array 448x448 bidimensionale riempito con 0s in un file denominato DAT:I(che è più breve della definizione di una funzione che restituisce l'array, in qualche modo)

I formati standard (utilizzati da tutte le funzioni grafiche) per i colori in SmileBASIC sono ARGB a 32 bit e RGBA a 55 bit 5551 ed 0è trasparente in entrambi.


Cosa rende questo trasparente invece del nero?
pipe

1
I colori sono in ARGBformato a 4 byte (comunemente usati in Smilebasic), quindi 0x00000000Alpha = 0, Red = 0, Green = 0, Blue = 0. Il nero sarebbe 0xFF000000.
12Me21

complimenti a SmileBasic per l'utilizzo di un formato di immagine RAW lol
don luminoso

Mi lamenterei per tecnicità che questo non è un formato di immagine poiché non lo è, GRPma lo lascerò andare poiché i dati effettivi archiviati sono gli stessi.
snail_

@snail_ Sta solo emettendo una matrice di pixel, non usando un formato immagine specifico.
12Me21

3

ScPL per scorciatoie iOS , 98 byte

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

Immagine dello schermo

Collegamento iCloud di collegamento

Prende un gif trasparente 1x1 codificato come base64 e lo ridimensiona


quello era ... strano ... qual è il link icloud a cui sono appena andato? ?
don luminoso

@donbright quando condividi una scorciatoia dall'app delle scorciatoie, crea quel collegamento
pfg

2

Jstx , 24 byte

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

Spiegazione

♪☺ü@ # 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.

Provalo online!




2

C ++, SFML, 131 byte

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

2

JavaScript + HTML, 56 byte

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

Facendo clic su "Esegui snippet di codice" si genererà un PNG trasparente 448x448 in un IFRAME. È quindi possibile fare clic con il pulsante destro del mouse su "Salva immagine come ..." per scaricarlo sul computer.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.