Faça uma imagem 448 * 448 transparente

10

Este é um desafio simples.

A tarefa é escrever um código que produza uma imagem quadrada 448 * 448 com 100% de transparência. A saída deve seguir as regras de imagem padrão .

Anush
fonte
7
O que impede as pessoas de enviar uma resposta de 0 byte que "gera" uma imagem transparente (invisível) na tela?
12Me21
9
@ 12Me21 Isso seria 448 * 448?
Anush 13/03/19
2
Isso é uma paródia de (ou pelo menos inspirada por) uma pergunta fechada no stackoverflow?
Foon
2
O que há de especial em 448 px?
31129 dan04
11
@Foon Definitivamente não é uma paródia, mas certamente eu estava interessado o suficiente para perguntar sobre o SO antes de perceber que seria muito mais divertido aqui.
Anush 13/03/19

Respostas:

28

Imagemagick em alguma concha, 35

convert -size 448x448 xc:none a.png

Isso é permitido?

vityavv
fonte
5
Bash, eu acho? Foi isso que usei quando testei. Qualquer shell POSIX deve funcionar?
vityavv
3
Funciona também no Windows (se o ImageMagick já estiver no PATH \windows\system32).
CL.
11
No Windows ImageMagick não está sendo enviado com a convertferramenta, porque o nome entra em conflito com o utilitário do sistema. Você corre magick convert ... em seu lugar.
N0rd 14/03/19
11
O @SztupY the convertfaz parte do ImageMagick, portanto chamá-lo de seu próprio idioma não funcionaria.
vityavv
11
é um comando próprio. Você pode apenas dizer que o idioma que você está usando é ImageMagick Convert. Pode valer a pena abrir uma meta sobre ele embora
SztupY
15

APL (Dyalog Unicode) , 11 bytes SBCS

Programa completo. Imprime uma matriz de 448 x 448 x 4 representando uma imagem rgba de 448 x 448.

448 448 40

Experimente online!

é r eshape

Adão
fonte
Não conheço o APL, mas acho que ele não tem uma duplicata para jogar golfe 448 448?
Kevin Cruijssen 13/03/19
448 * 448 = 200704, então você não pode substituir o espaço separado 448 448 por 200704, economizando 1 byte?
NaCl
11
@ NaCl Nesse caso, por que não apenas multiplicar por 4 e ter 802832p0como resposta?
John Hamilton
@ NaCl Porque esse não é um dos formatos de imagem válidos por regras padrão .
Adám 13/03/19
@ JohnHamilton Pela mesma razão que minha resposta ao NaCl .
Adám 13/03/19
8

Go, 70

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

Nunca vi um golfe em Go antes. Define uma função chamada a que gera a imagem

vityavv
fonte
2
Chame de Go-lf.
Skyler
6

JavaScript (ES6), 74 69 bytes

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

Retorna uma imagem PNG codificada como dados: URL adequado, por exemplo, para definir como o srcde um HTMLImageElement. Editar: salvou 3 bytes graças a @Shaggy e mais 2 bytes graças a @Arnauld.

Neil
fonte
11
71 bytes ?
Shaggy
2
document.createElement`canvas` deve funcionar, economizando mais 2 bytes.
Arnauld
11
Se createelement for válido, ver document.body e usar o fato de um id se tornar uma variável serão válidos? Empilhe também trechos de trecho
somente ASCII
11
Você poderia adicionar algo como d=documentno topo e substituir documentpor d? Deve salvar ~ 5 caracteres.
22419 Luke
11
@ Lucas O document.writeé apenas parte do snippet da pilha, não parte da função, portanto não conta de qualquer maneira.
Neil
6

Bytes Java 8, 23 (ou 20)

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

Retorna uma matriz 3D de 448x448x4 0s.

Experimente online.

Explicação:

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]

Retorna uma matriz de 448x448 de 0s.

Em Java, os valores RGBA podem ser representados por um número inteiro . O hexadecimal 0x00000000representaria 00para vermelho, verde, azul e alfa, respectivamente. E 0x00000000é igual ao número inteiro 0.

Experimente online.

Kevin Cruijssen
fonte
Ah ah ah, ame :-) Não funciona com simplicidade v->new int[448][448]? Porque uma cor pode ser representada com um número inteiro (RGBA) em Java.
Olivier Grégoire
@ OlivierGrégoire Não, preciso dos quatro 0s por pixel 448x448 para os valores RBGA. EDIT: Hmm .. é um número inteiro 0-255um valor RBGA válido? Eu sei que é um valor RGB válido, mas também RGBA? Eu quase nunca uso imagens em Java, então não estou muito familiarizado com elas. Simplesmente baseei meus 4 0s internos em outras respostas.
Kevin Cruijssen 13/03/19
Sim, quatro 0s como (em hexadecimal) 0x00000000que se encaixam em um int. Os 2 primeiros dígitos hexadecimais são Alfa, os 2 seguintes são vermelhos, os 2 seguintes são verdes, os 2 finais são azuis. Portanto, você só precisa de um número inteiro. Consulte BufferedImage.TYPE_INT_ARGB . Você tem 4 valores, resumidos como um número inteiro. E 0x00000000é igual a 0.
Olivier Grégoire
Eu acho que é a primeira vez em ~ 2 anos aqui que eu vejo o Java ser realmente competitivo!
Shaggy
@Shaggy Com essas linguagens de golfe, ainda não é tão competitivo. Além disso, eu tinha algumas outras respostas semi-competitivas de Java no passado, como esta , ou esta que estava ganhando até o Bash aparecer (e R jogou seu responda).
Kevin Cruijssen 16/03/19
6

Java 8


Salvando a imagem em um arquivo com caminho s, 101 bytes

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

Experimente online ... de alguma forma

Retornando a BufferedImage, 46 bytes

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

Salvando a imagem no arquivo f, 83 bytes

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

Despejo de PNG para STDOUT, 92 bytes (graças apenas ao ASCII!)

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

Experimente online!
Agradecemos a Kevin por salvar um byte para a segunda e quarta soluções!

Benjamin Urquhart
fonte
2
Você quer dizer vazio ou transparente?
Anush 12/03/19
11
Basta escrever para stdout
somente ASCII
11
@ Somente ASCII Então, escreva um array vazio (preenchido com zeros) 448 * 448 * 4 no stdout? De qualquer forma, eu gosto da idéia de criar um arquivo PNG real.
Benjamin Urquhart
11
Você pode jogar ()->em duas de suas respostas v->, já que é permitido ter uma entrada vazia não utilizada (para a qual eu pessoalmente uso Void). Seu último TIO seria então esse .
Kevin Cruijssen 13/03/19
11
@NahuelFouilleul porque quero saída de uma imagem real e não um pixel por representação de pixel de um
Benjamin Urquhart
6

05AB1E , 12 10 9 bytes

448LDδ4Å0

Experimente online.

ou alternativamente:

¾4Ž1ÂDиии

Experimente online.

-2 bytes graças a @Emigna .
-1 byte graças a @Adnan .

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

Explicação:

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)

Veja este 05AB1E resposta meu (seção Como comprimir grandes inteiros? ) Para entender por que Ž1Âé 448.

Kevin Cruijssen
fonte
5

Processando, 66 bytes

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

Python 2.7, 17 bytes (22 com impressão)

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

Com impressão:

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

Como variável:

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

Como uma matriz de RGBA é permitida, foi isso que criei acima, padronizando todos os 0s - significando preto, mas totalmente transparente.

Experimente online!

Dispensador Snaddyvitch
fonte
Novamente, com este, basta multiplicar manualmente e você verá [0]*802816que isso também deve funcionar.
John Hamilton
11
@JohnHamilton Me corrija se eu estiver errado, mas acredito que teria que ser uma matriz 3D (Uma matriz de linhas de pixels), ou seja, matriz [pixel x coord] [pixel y coord] [r / g / b / a]
Dispensador Snaddyvitch 13/03/19
11
Não tão conciso, mas aqui é uma alternativa que obtém os zeros em uma matriz numpy ... np.zeros ([4] + [448] * 2)
P. Hopkinson
5

Geléia , 8 bytes

448ṁ4¬¥þ

Um link niládico que gera uma matriz de 448 por 448 RGBA de pixels pretos transparentes.

Experimente online!

Como?

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

HTML, 25 bytes

Isso é válido?

<svg height=448 width=448

Teste ( backgroundaplicado com CSS para que você possa "vê-lo")

Shaggy
fonte
Não acredito que isso seja válido, pois gravar <svg height=448 width=448em um arquivo html e abri-lo produz um vazio <body>. No entanto , com a penalidade de 1 byte, se você escrever <svg height=448 width=448>, produz um <body>com uma imagem SVG vazia.
Ismael Miguel
@IsmaelMiguel, definimos idiomas pelo intérprete, e não pela implementação (pretendida). Que exista um intérprete (neste caso, CodePen) que nos permita omitir o fechamento >significa que isso é, de fato, válido, tanto quanto a marcação.
Shaggy
11
O Codepen adiciona código HTML adicional para fazê-lo funcionar. Ele adiciona um <!DOCTYPE html>, <html>, <head>, <style>, <script>e tudo vai para o <body>. É necessário um pouco do código adicional para produzir a saída desejada. Você pode ver que o código resultante é analisado como <svg height="448" width="448" < body></svg>, porque ele grava <svg height=448 width=448 </body>no iframe. Como tal, ainda acredito que não é válido.
Ismael Miguel
5

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

Isso grava um arquivo o.tga real e legível, sem bibliotecas ou funções internas, usando o formato binário TGA por http://paulbourke.net/dataformats/tga/ , codificando a largura e a altura no cabeçalho do arquivo binário.


-5 bytes abreviam o nome do arquivo, corrigem o tamanho da imagem, somente @ ASCII

não brilhante
fonte
ele precisa ser impresso em um arquivo: P
somente ASCII
precisa ser bidimensional? Eu poderia apenas dizer [0; 444 * 444 * 4]; e diga que eu criei uma imagem transparente 444x444. estou tornando isso interessante.
don brilhante
bem também airia funcionar como nome de arquivo não seria. btw é 448 * 448 não 444 * 444, então isso é inválido
somente ASCII
oops, ha ha graças #
don bright
para torná-lo ainda mais interessante, codifique a duração da execução: P (os dados da imagem devem ser [255,0,0,0,0]6272 vezes ( [0,0,0,0]128 vezes, repetidas 6272 vezes). o tipo de imagem então 10não seria 2. ainda melhor, mapa de cores para a codificação da duração da execução mais curta ( 0,0,0,0-> 0)
Somente ASCII
4

C # (compilador interativo do Visual C #) , 48 bytes

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

Aparentemente, a saída [1D array of pixels, width, height]está ok, então isso gera uma tupla de `(IEnumerable de pixels, largura, altura).

Experimente online!

C # (compilador interativo do Visual C #) , 58 bytes

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

A matriz original retornando resposta.

Como as regras de E / S da imagem permitem a saída como uma matriz de valores RGB, esse envio gera uma matriz de valores RGBA, representada por tuplas com quatro valores, sendo todos 0.

Experimente online!

Modalidade de ignorância
fonte
4

PHP, 192 bytes

Infelizmente, o PHP meio que é péssimo nesse aspecto, porque requer muito código. Mas, novamente, onde o PHP não é ruim?

$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

Obviamente, se você quiser apenas criá-lo sem enviá-lo, poderá omitir os comandos header()e readfile(). Ainda assim, é idioticamente longo.

YU NO WORK
fonte
11
no lado positivo, esta é uma das respostas mais 'legíveis', que indica exatamente o que seu fazer
don brilhante
@donbright Não é realmente o ponto de co-criar tho. ; P No entanto, acho que não há outra maneira de fazer isso no PHP, a menos que eu apenas faça eco de HTML.
YU NO WORK
@YUNOWORK De acordo com as regras, você pode exportar uma matriz. Você pode usar '<?php return '.var_export(array_fill(0,952576,0),1).';';para exportar a matriz de maneira executável. você pode fazer php -f image.php > array.phpe em outro lugar você pode fazer $array = include('array.php');para ter uma matriz utilizável novamente. Mas eu não sei se é válido, então estou dando a você para adicionar como alternativa. Ou até um <?=json_encode(array_fill(0,952576,0));.
Ismael Miguel
By the way, truepode ser substituído por 1, para salvar 3 bytes. Lendo a documentação de imagepng(), você pode apenas fazer header('Content-type: image/png');imagepng($i);. Eu acredito que você também pode substituir $b=imagecolorallocatealpha($i,0,0,0,127);imagefill($i,0,0,$b);por, imagefill($i,0,0,imagecolorallocatealpha($i,0,0,0,127));mas não me cite sobre isso.
Ismael Miguel
Acabei de testar e <? imagecolorallocatealpha($i=imagecreate(448,448),0,0,0,127);header('Content-type: image/png');imagepng($i);produz uma imagem transparente (109 bytes). Envia automaticamente a imagem para o navegador / saída padrão e tudo mais.
Ismael Miguel
4

Python 3.7 - PIL Importado, 30 bytes

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

Isso requer uma importação, mas tem o benefício de criar e exibir um arquivo de imagem real, em vez de uma matriz vazia abstrata.

Explicação:

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á a imagem no seu programa de imagem padrão. No meu caso, isso abre um arquivo de bitmap temporário no Windows Photo Viewer, mas os resultados podem variar. Indiscutivelmente, isso é trapaça, pois a representação de bitmap não contém transparência

Variações ...

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
fonte
11
Se você não contar sua importação, deve declarar seu idioma como Python 3.7 - PIL importado ou algo semelhante. Além disso, em sua explicação, você capitaliza Import.
Jonathan Frech
Obrigado, corrigido. Devo dar a minha resposta como 24 bytes, 30 ou 37?
P. Hopkinson
A contagem de bytes depende do idioma que você usa. A partir de agora, seu envio leva 30 bytes na linguagem Python 3 com PIL importado . Se você escreveu em Python 3 , provavelmente seria mais longo. Obviamente, se você usar a linguagem Python 3 com todo o namespace do PIL importado , sua resposta será new("LA",[448]*2).show()26 bytes.
Jonathan Frech
Muito obrigado por enviar o código que eu posso executar e que produz saída que eu posso testar!
Anush
4

MATLAB, 31 bytes

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

Cria uma matriz de NaNvalores 448 x 448 e, em seguida, usa-os imwritepara salvá-los em um arquivo PNG nomeado '.png'e define a transparência como 1, tornando-o transparente. O 'Transparency'nome do parâmetro pode ser abreviado para 'tr'MATLAB, permitindo a correspondência parcial de string dos nomes dos parâmetros, desde que a versão abreviada seja exclusiva entre os parâmetros disponíveis.

Suever
fonte
espera, por que 443 ??
somente ASCII
@ ASCII-only Fat fingers :)
Suever
O_o que foi uma resposta incrivelmente rápida
somente ASCII
4

dzaima / APL + APLP5 , 18 16 bytes

{P5.img⍴∘0,⍨448}

Função que gera um objeto de imagem que pode ser desenhado na tela (sem efeito) ou convertido novamente em valores de pixel.

-2 graças a ngn !

dzaima
fonte
isso funcionaria? {P5.img⍴∘0,⍨448}
NGN
@ngn seria de fato, obrigado!
Dzaima 15/03/19
3

Geléia , 10 9 bytes

x4Wẋ448Ɗ⁺

Experimente online!

Produz uma matriz de 448x448x4

Obrigado a @ JonathanAllan por salvar um byte.

Nick Kennedy
fonte
11
pode ser
Jonathan Allan
3

Vermelho , 33 bytes

a: make image![448x448 0.0.0.255]

O padrão de opacidade é totalmente opaco (0)

Isto é como usá-lo / um programa completo /:

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

MathGolf , 10 bytes

º4♦7*_ß{.a

Experimente online!

Explicação

º            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 economiza 1 byte em comparação com o "padrão" ♦7*_4º*a*a*

maxb
fonte
3

JavaScript (Node.js) , 39 bytes

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

Aparentemente, a saída [height, width, 1d array of RGBA values]está ok.

Experimente online!

-3 bytes graças a @Arnauld

Modalidade de ignorância
fonte
inválido ... é uma lista de cadeias de caracteres
somente ASCII
Também você pode produzir[1D array of pixels, width, height]
somente ASCII
@ Somente ASCII corrigido agora
Modalidade de ignorância
41 bytes ou 39 bytes, se pudermos produzir [width, height, array].
22919 Arnauld
3

SmileBASIC, 27 bytes

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

Salva uma matriz bidimensional de 448x448 preenchida com 0s em um arquivo chamado DAT:I (que é mais curto do que definir uma função que retorna a matriz, de alguma forma)

Os formatos padrão (usados ​​por todas as funções gráficas) para cores no SmileBASIC são ARGB de 32 bits e 5551 RGBA de 16 bits e 0são transparentes em ambos.

12Me21
fonte
O que torna isso transparente em vez de preto?
pipe
11
As cores estão no ARGBformato de 4 bytes (comumente usado em Smilebasic), assim 0x00000000como Alpha = 0, Vermelho = 0, Verde = 0, Azul = 0. O preto seria 0xFF000000.
12Me21
parabéns ao SmileBasic por usar um formato de imagem RAW lol
don bright
Eu reclamaria do tecnicismo de que esse não é um formato de imagem, pois não é, GRPmas deixarei para lá, já que os dados reais sendo armazenados são os mesmos.
caracol_
@snail_ Está apenas produzindo uma matriz de pixels, sem usar um formato de imagem específico.
12Me21
3

ScPL para atalhos para iOS , 98 bytes

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

Captura de tela

Atalho do iCloud Link

Pega um gif transparente 1x1 codificado como base64 e o redimensiona

pfg
fonte
isso foi ... estranho ... qual é o link do icloud que eu acabei de acessar? ?
don brilhante
@donbright quando você compartilha um atalho do aplicativo atalhos, faz essa ligação
pfg
2

Jstx , 24 bytes

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

Explicação

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

Experimente online!

Quantum64
fonte
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
fonte
2

JavaScript + HTML, 56 bytes

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

Clicar em "Executar snippet de código" gerará um PNG transparente de 448x448 em um IFRAME. Você pode clicar com o botão direito do mouse em "Salvar imagem como ..." para fazer o download para o seu computador.

dana
fonte