Hacer una imagen transparente 448 * 448

10

Este es un desafío simple.

La tarea es escribir código que genere una imagen cuadrada de 448 * 448 con 100% de transparencia. El resultado debe seguir las reglas de imagen estándar .

Anush
fuente
77
¿Qué impide que las personas envíen una respuesta de 0 bytes que "muestra" una imagen transparente (invisible) en la pantalla?
12Me21
99
@ 12Me21 ¿Sería 448 * 448?
Anush
2
¿Es esta una parodia de (o al menos inspirada por) una pregunta cerrada sobre stackoverflow?
Foon
2
¿Qué tiene de especial 448 px?
dan04
1
@Foon Definitivamente no es una parodia, pero ciertamente estaba lo suficientemente interesado como para preguntar sobre SO antes de darme cuenta de que sería mucho más divertido aquí.
Anush

Respuestas:

28

Imagemagick en una cáscara, 35

convert -size 448x448 xc:none a.png

¿Esto está permitido?

vityavv
fuente
55
Bash, supongo? Eso es lo que usé cuando lo probé. Cualquier shell POSIX debería funcionar?
vityavv
3
Funciona también en Windows (si ImageMagick está en la RUTA antes \windows\system32).
CL.
1
En Windows, ImageMagick no se envía con la convertherramienta, porque el nombre choca con la utilidad del sistema. Corres en su magick convert ... lugar.
n0rd
1
@SztupY the convertes parte de ImageMagick, por lo que llamarlo en su propio idioma no funcionaría.
vityavv
1
Es un comando propio. Puedes decir que el idioma que estás usando es ImageMagick Convert. Sin embargo
SztupY
15

APL (Dyalog Unicode) , SBCS de 11 bytes

Programa completo Imprime una matriz de 448 por 448 por 4 que representa una imagen rgba de 448 por 448.

448 448 40

Pruébalo en línea!

es r eshape

Adán
fuente
No conozco APL en absoluto, pero supongo que no tiene un duplicado para jugar al golf 448 448.
Kevin Cruijssen
448 * 448 = 200704, entonces ¿no puede reemplazar el espacio separado 448 448 con 200704, ahorrando 1 byte?
NaCl
1
@NaCl En ese caso, ¿por qué no simplemente multiplicar eso por 4 y tener 802832p0como respuesta?
John Hamilton
@NaCl Porque ese no es uno de los formatos de imagen válidos según las reglas predeterminadas .
Adám
@JohnHamilton Por la misma razón que mi respuesta a NaCl .
Adám
8

Go, 70

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

Nunca he visto un golf en Go antes. Define una función llamada a que genera la imagen

vityavv
fuente
2
Llámalo Go-lf.
Skyler
6

JavaScript (ES6), 74 69 bytes

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

Devuelve una imagen PNG codificada como datos: URL adecuada, p. Ej., Para establecerla como srcuna HTMLImageElement. Editar: Guardado 3 bytes gracias a @Shaggy y otros 2 bytes gracias a @Arnauld.

Neil
fuente
1
71 bytes ?
Shaggy
2
document.createElement`canvas` debería funcionar, ahorrando 2 bytes más.
Arnauld
1
Si createelement es válido, ¿sería válido ver document.body y usar el hecho de que una identificación se convierte en una variable? También apile fragmentos pls
solo ASCII
1
¿Podría agregar algo como d=documenten la parte superior y reemplazarlo documentcon d? Debería guardar ~ 5 caracteres.
Luke
1
@Luke The document.writees solo parte del fragmento de pila, no parte de la función, por lo que no cuenta de todos modos.
Neil
6

Java 8, 23 (o 20) bytes

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

Devuelve una matriz 3D de 448x448x4 0s.

Pruébalo en línea.

Explicación:

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]

Devuelve una matriz de 448x448 de 0s.

En Java, los valores RGBA pueden representarse mediante un número entero . El hexadecimal 0x00000000representaría 00para rojo, verde, azul y alfa respectivamente. Y 0x00000000es igual al entero 0.

Pruébalo en línea.

Kevin Cruijssen
fuente
Ah ah ah, me encanta :-) ¿No funciona simplemente v->new int[448][448]? Porque un color se puede representar con un número entero (RGBA) en Java.
Olivier Grégoire
@ OlivierGrégoire No, necesito los cuatro ceros por 448x448 píxeles para los valores RBGA. EDITAR: Hmm .. ¿es un entero 0-255un valor RBGA válido? Sé que es un valor RGB válido, pero también RGBA. Casi nunca uso imágenes en Java, así que no estoy muy familiarizado con ellas. Simplemente basé mis 4 ceros internos en otras respuestas.
Kevin Cruijssen
Sí, cuatro 0 como (en hexadecimal) 0x00000000que caben en un int. Los primeros 2 dígitos hexadecimales son el Alfa, los siguientes 2 son el rojo, los siguientes 2 son el verde, los 2 últimos son el azul, por lo que solo necesita un número entero. Ver BufferedImage.TYPE_INT_ARGB . Tienes 4 valores, resumidos como un entero. Y 0x00000000es igual a 0.
Olivier Grégoire
¡Creo que esta es la primera vez en ~ 2 años aquí que he visto a Java ser realmente competitivo!
Shaggy
@Shaggy Con estos lenguajes de golf alrededor todavía no es tan competitivo ... Además, tuve algunas otras respuestas Java semi-competitivas en el pasado, como esta , o esta que estaba ganando hasta que apareció el Bash (y R jugó su golf). responder).
Kevin Cruijssen
6

Java 8


Guardar la imagen en un archivo con ruta s, 101 bytes

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

Pruébelo en línea ... de alguna manera

Devolviendo la imagen almacenada, 46 bytes

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

Guardar la imagen en el archivo f, 83 bytes

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

Volcado de PNG a STDOUT, 92 bytes (¡gracias solo ASCII!)

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

Pruébalo en línea!
¡Gracias a Kevin por guardar un byte para la segunda y cuarta solución!

Benjamin Urquhart
fuente
2
¿Te refieres a vacío o transparente?
Anush
1
Solo escriba a stdout
solo ASCII
1
@ Solo ASCII Entonces, ¿escribir una matriz vacía (llena de ceros) 448 * 448 * 4 en stdout? De todos modos, me gusta la idea de crear un archivo PNG real.
Benjamin Urquhart
1
Puede jugar golf ()->en dos de sus respuestas v->, ya que se le permite tener una entrada vacía no utilizada (para lo que yo personalmente uso Void). Su último TIO sería este en su lugar .
Kevin Cruijssen
1
@NahuelFouilleul porque quiero generar una imagen real y no una representación píxel por píxel de una
Benjamin Urquhart
6

05AB1E , 12 10 9 bytes

448LDδ4Å0

Pruébalo en línea.

o alternativamente:

¾4Ž1ÂDиии

Pruébalo en línea.

-2 bytes gracias a @Emigna .
-1 byte gracias a @Adnan .

Emite una lista 3D de 0s de 448x448x4.

Explicación:

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)

Ver este 05AB1E respuesta mío (sección Cómo comprimir grandes números enteros? ) Para entender por qué Ž1Âes 448.

Kevin Cruijssen
fuente
5

Procesando, 66 bytes

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

Python 2.7, 17 Bytes (22 con impresión)

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

Con impresión:

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

Como variable:

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

Como se permite un conjunto de RGBA, eso es lo que he creado anteriormente, por defecto a todos los 0, es decir, negro, pero totalmente transparente.

Pruébalo en línea!

Dispensador Snaddyvitch
fuente
De nuevo, con este, simplemente multiplique manualmente y obtendrá [0]*802816que también debería funcionar.
John Hamilton
1
@JohnHamilton Corrígeme si me equivoco, pero creo que tendría que ser una matriz 3D (una matriz de filas de píxeles), es decir, matriz [pixel x coord] [pixel y coord] [r / g / b / a]
Snaddyvitch Dispenser
1
No es tan conciso, pero aquí hay una alternativa que pone los ceros en una matriz numpy ... np.zeros ([4] + [448] * 2)
P. Hopkinson
5

Jalea , 8 bytes

448ṁ4¬¥þ

Un enlace niládico que produce una matriz RGBA de 448 por 448 de píxeles negros transparentes.

Pruébalo en línea!

¿Cómo?

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
fuente
5

HTML, 25 bytes

¿Es esto válido?

<svg height=448 width=448

Pruébelo ( backgroundaplicado con CSS para que pueda "verlo")

Lanudo
fuente
No creo que esto sea válido, ya que escribir <svg height=448 width=448en un archivo html y abrirlo produce un vacío <body>. Sin embargo , con la penalidad de 1 byte, si escribe <svg height=448 width=448>, produce un <body>con una imagen SVG vacía.
Ismael Miguel
@IsmaelMiguel, definimos los idiomas por su intérprete en lugar de su implementación (prevista). Que exista un intérprete (en este caso CodePen) que nos permita omitir el cierre >significa que esto es, de hecho, válido, en lo que respecta al marcado.
Shaggy
1
Codepen agrega código HTML adicional para que funcione. Se añade un <!DOCTYPE html>, <html>, <head>, <style>, <script>y todo va al <body>. Se requiere parte del código adicional para producir la salida deseada. Puede ver que el código resultante se analiza como <svg height="448" width="448" < body></svg>, porque escribe <svg height=448 width=448 </body>en el iframe. Como tal, todavía creo que no es válido.
Ismael Miguel
5

Rust - 206 201 168 bytes

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

Esto escribe un archivo o.tga real y legible, sin bibliotecas ni funciones integradas, utilizando el formato binario TGA según http://paulbourke.net/dataformats/tga/ , codificando el ancho y la altura en el encabezado del archivo binario.


-5 bytes acortar el nombre del archivo, corregir el tamaño de la imagen, @ solo ASCII

don brillante
fuente
sin embargo, debe imprimirse en un archivo: P
Solo ASCII
¿necesita siquiera ser bidimensional? Podría decir [0; 444 * 444 * 4]; y digamos que creé una imagen transparente de 444x444. Lo estoy haciendo interesante.
Don brillante
bien también afuncionaría como nombre de archivo no lo haría. por cierto es 448 * 448 no 444 * 444, por lo que esto no es válido
solo ASCII el
oops, ja ja gracias
don brillante
para hacerlo aún más interesante, codifique la longitud de ejecución: P (los datos de la imagen deben ser [255,0,0,0,0]6272 veces ( [0,0,0,0]128 veces, repetidas 6272 veces). El tipo de imagen 10no sería, 2incluso mejor, mapa de colores para una codificación de longitud de ejecución más corta ( 0,0,0,0-> 0)
ASCII solo el
4

C # (compilador interactivo de Visual C #) , 48 bytes

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

Aparentemente, la salida [1D array of pixels, width, height]está bien, por lo que genera una tupla de `(IEnumerable de píxeles, ancho, alto).

Pruébalo en línea!

C # (compilador interactivo de Visual C #) , 58 bytes

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

La matriz original que devuelve la respuesta.

Dado que las reglas IO de la imagen permiten la salida como una matriz de valores RGB, este envío genera una matriz de valores RGBA, representada por tuplas con cuatro valores, siendo todos 0.

Pruébalo en línea!

Encarnación de la ignorancia
fuente
4

PHP, 192 bytes

Lamentablemente, PHP apesta en ese aspecto porque requiere una gran cantidad de código. Pero, de nuevo, donde PHP no apesta.

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

Sin 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

Obviamente, si solo desea crearlo sin generarlo, puede omitir los comandos header()y readfile(). Aún así, es idiotamente largo.

YU NO TRABAJAS
fuente
1
en el lado positivo, esta es una de las respuestas más 'legibles' que indica exactamente lo que está haciendo
don brillante
@donbright No es realmente el punto de codegolfing aunque. ; P Sin embargo, supongo que no hay otra manera de hacer esto en PHP, a menos que solo haga eco de algo de HTML.
NO HAY TRABAJO
@YUNOWORK De acuerdo con las reglas, puede exportar una matriz. Puede usar '<?php return '.var_export(array_fill(0,952576,0),1).';';para exportar la matriz de forma ejecutable. puede hacer php -f image.php > array.php, y en otro lugar puede hacer $array = include('array.php');para tener una matriz utilizable nuevamente. Pero no sé si es válido, así que te lo doy para que lo agregues como alternativa. O incluso a <?=json_encode(array_fill(0,952576,0));.
Ismael Miguel
Por cierto, truese puede reemplazar con 1, para guardar 3 bytes. Leyendo la documentación de imagepng(), puedes hacerlo header('Content-type: image/png');imagepng($i);. Creo que también se puede sustituir $b=imagecolorallocatealpha($i,0,0,0,127);imagefill($i,0,0,$b);con imagefill($i,0,0,imagecolorallocatealpha($i,0,0,0,127));menos yo DonT citar al respecto.
Ismael Miguel
Acabo de probar y <? imagecolorallocatealpha($i=imagecreate(448,448),0,0,0,127);header('Content-type: image/png');imagepng($i);produce una imagen transparente (109 bytes). Envía automáticamente la imagen al navegador / salida estándar y todo.
Ismael Miguel
4

Python 3.7 - PIL importado, 30 bytes

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

Esto requiere una importación, pero tiene la ventaja de crear y mostrar un archivo de imagen real en lugar de una matriz vacía abstracta.

Explicación:

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 () abrirá la imagen en su programa de imagen predeterminado. En mi caso, esto abre un archivo de mapa de bits temporal en Windows Photo Viewer, pero los resultados pueden variar. Podría decirse que esto es trampa ya que la representación de mapa de bits no contiene transparencia

Variaciones ...

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
fuente
1
Si no cuenta su importación, debe indicar su idioma como Python 3.7 - PIL importado o algo similar. Además, en tu explicación, capitalizas Import.
Jonathan Frech
Gracias, corregido. ¿Debo dar mi respuesta como 24 bytes, 30 o 37?
P. Hopkinson
El recuento de bytes depende del idioma que use. A partir de ahora, su envío toma 30 bytes en el lenguaje Python 3 con PIL importado . Si escribiste en Python 3 , lo más probable es que sea más largo. Por supuesto, si usa el lenguaje Python 3 con todo el espacio de nombres PIL importado , su respuesta sería new("LA",[448]*2).show()26 bytes.
Jonathan Frech
¡Muchas gracias por enviar el código que realmente puedo ejecutar y que produce resultados que puedo probar!
Anush
4

MATLAB, 31 bytes

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

Crea una matriz de NaNvalores de 448 x 448 , y luego los usa imwritepara guardarlos en un archivo PNG llamado '.png'y establece la transparencia en 1, haciéndolo transparente. El 'Transparency'nombre del parámetro puede abreviarse 'tr'ya que MATLAB permite la coincidencia parcial de cadenas de nombres de parámetros siempre que la versión abreviada sea única entre los parámetros disponibles.

Suever
fuente
espera, ¿por qué 443?
Solo ASCII
@ Dedos gordos solo ASCII :)
Suever
O_o esa fue una respuesta increíblemente rápida
solo ASCII
4

dzaima / APL + APLP5 , 18 16 bytes

{P5.img⍴∘0,⍨448}

Función que genera un objeto de imagen que se puede dibujar en la pantalla (sin efecto) o volver a convertirlo en valores de píxeles.

-2 gracias a ngn !

dzaima
fuente
funcionaria esto? {P5.img⍴∘0,⍨448}
ngn
@ngn de hecho lo haría, ¡gracias!
dzaima
3

Jalea , 10 9 bytes

x4Wẋ448Ɗ⁺

Pruébalo en línea!

Emite una matriz 448x448x4

Gracias a @JonathanAllan por guardar un byte.

Nick Kennedy
fuente
1
puede ser
Jonathan Allan
3

Rojo , 33 bytes

a: make image![448x448 0.0.0.255]

La opacidad por defecto es completamente opaca (0)

Así es como se usa / un programa completo /:

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

MathGolf , 10 bytes

º4♦7*_ß{.a

Pruébalo en línea!

Explicación

º            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

Este método ahorra 1 byte en comparación con el "estándar" ♦7*_4º*a*a*

maxb
fuente
3

JavaScript (Node.js) , 39 bytes

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

Aparentemente, la salida [height, width, 1d array of RGBA values]está bien.

Pruébalo en línea!

-3 bytes gracias a @Arnauld

Encarnación de la ignorancia
fuente
inválido ... es una lista de cadenas
solo ASCII
También puede emitir[1D array of pixels, width, height]
solo ASCII el
@ Solo ASCII Corregido ahora
Encarnación de la ignorancia
41 bytes o 39 bytes si podemos generar [width, height, array].
Arnauld
3

SmileBASIC, 27 bytes

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

Guarda una matriz bidimensional 448x448 llena de ceros en un archivo llamado DAT:I (que es más corto que definir una función que devuelve la matriz, de alguna manera)

Los formatos estándar (utilizados por todas las funciones gráficas) para los colores en SmileBASIC son ARGB de 32 bits y RGBA 5551 de 16 bits, y 0son transparentes en ambos.

12Me21
fuente
¿Qué hace que esto sea transparente en lugar de negro?
tubería
1
Los colores están en ARGBformato de 4 bytes (comúnmente utilizado en Smilebasic), por lo que 0x00000000es Alfa = 0, Rojo = 0, Verde = 0, Azul = 0. Negro sería 0xFF000000.
12Me21
felicitaciones a SmileBasic por usar un formato de imagen RAW lol
don bright
Me quejaría por tecnicismo de que este no es un formato de imagen, ya que no lo es, GRPpero lo dejaré ir ya que los datos reales que se almacenan son los mismos.
caracol_
@snail_ Solo genera una matriz de píxeles, no utiliza un formato de imagen específico.
12Me21
3

ScPL para accesos directos de iOS , 98 bytes

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

Captura de pantalla

Acceso directo a iCloud Link

Toma un gif transparente 1x1 codificado como base64 y lo redimensiona

pfg
fuente
eso fue ... raro ... ¿cuál es el enlace de icloud al que acabo de ir? ?
Don brillante
@donbright cuando compartes un acceso directo desde la aplicación de accesos directos, hace ese enlace
pfg
2

Jstx , 24 bytes

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

Explicación

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

Pruébalo en línea!

Quantum64
fuente
2

C ++, SFML, 131 bytes

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

JavaScript + HTML, 56 bytes

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

Al hacer clic en "Ejecutar fragmento de código", se generará un PNG transparente de 448x448 en un IFRAME. Luego puede hacer clic con el botón derecho en "Guardar imagen como ..." para descargarlo en su computadora.

dana
fuente