Şeffaf bir 448 * 448 resim yapın


10

Bu basit bir zorluk.

Görev,% 100 şeffaflık ile 448 * 448 kare görüntü veren kod yazmaktır. Çıktı, standart görüntü kurallarına uymalıdır .


7
İnsanların şeffaf (görünmez) bir görüntüyü ekrana "gönderen" 0 baytlık bir yanıt göndermesini ne engeller?
12Me21

9
@ 12Me21 Bu 448 * 448 olur mu?
Anush

2
Bu, stackoverflow hakkında kapalı bir sorudan oluşan bir parodi mi (ya da en azından ilham alıyorsa)?
Foon

2
448 piksel hakkında özel olan nedir?
dan04

1
@Foon Kesinlikle bir parodi değil ama kesinlikle burada çok daha eğlenceli olacağını fark etmeden önce SO soracak kadar ilgilendi.
Anush

Yanıtlar:


28

Bazı kabuklarda imagemagick, 35

convert -size 448x448 xc:none a.png

Buna izin veriliyor mu?


5
Bash, sanırım? Test ettiğimde kullandığım buydu. Herhangi bir POSIX kabuğu çalışmalı mı?
vityavv

3
Windows'ta da çalışır (ImageMagick daha önce PATH'de ise \windows\system32).
CL.

1
Windows ImageMagick'te, convertad sistem yardımcı programıyla çakıştığından, araçla birlikte gönderilmiyor . Onun magick convert ... yerine kaçıyorsun.
n0rd

1
@SztupY convertImageMagick'in bir parçasıdır, bu yüzden kendi dili olarak adlandırmak işe yaramaz.
vityavv

1
bu kendi emridir. Sadece kullandığınız dilin olduğunu söyleyebilirsiniz ImageMagick Convert. Bununla ilgili bir meta açmaya değer olabilir
SztupY

15

APL (Dyalog Unicode) , 11 bayt SBCS

Tam program. 448 x 448 rgba görüntüsünü temsil eden 448 x 448 x 4 dizisini yazdırır.

448 448 40

Çevrimiçi deneyin!

bir r eshape


APL'yi hiç bilmiyorum, ama sanırım golf için bir kopyası yok 448 448?
Kevin Cruijssen

448 * 448 = 200704, bu yüzden 448 448 ile ayrılmış alanı 200704 ile değiştiremez misiniz, 1 bayt tasarruf?
NaCl

1
@NaCl Bu durumda neden bunu sadece 4 ile çarpıp 802832p0cevap olarak vermiyoruz?
John Hamilton

@NaCl Çünkü bu, varsayılan kurallar için geçerli resim biçimlerinden biri değil .
Adám

@JohnHamilton NaCl'ye verdiğim cevapla aynı nedenden ötürü .
Adám

8

Git, 70

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

Daha önce Go'da hiç golf görmedim. Görüntünün çıktısını veren a adlı bir işlevi tanımlar.


2
Buna Go-lf deyin.
Skyler

6

JavaScript (ES6), 74 69 bayt

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

İade veri olarak kodlanan bir PNG resim: olarak ayarlanması için URL uygun ör srcbir bir HTMLImageElement. Düzenleme: @Shaggy sayesinde 3 bayt ve @Arnauld sayesinde 2 bayt daha kaydetti.



2
document.createElement`canvas` 2 bayt daha tasarruf etmeli.
Arnauld

1
Eğer oluşturma geçerliyse, document.body'i görür ve kimliğin bir değişken haline gelmesi geçerli olur mu? Ayrıca snippet pls yığını
sadece ASCII sadece

1
d=documentEn üste benzer bir şey ekleyebilir ve documentonunla değiştirebilir dmisiniz? ~ 5 karakter kaydetmelidir.
Luke

1
@ Luke Bu document.writefonksiyonun bir parçası değil, yığın snippet'inin bir parçasıdır, bu yüzden yine de sayılmaz.
Neil

6

Java 8, 23 (veya 20) bayt

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

448x448x4 0'lık 3B bir dizi döndürür.

Çevrimiçi deneyin.

Açıklama:

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]

0'ların 448x448 matrisini döndürür.

Java'da RGBA değerleri bir tamsayı ile temsil edilebilir . Onaltılık 0x00000000temsil edeceğini 00sırasıyla kırmızı, yeşil, mavi ve alfa için. Ve 0x00000000tamsayıya eşittir0 .

Çevrimiçi deneyin.


Ah ah ah, love it :-) Basitçe çalışmıyor mu v->new int[448][448]? Çünkü bir renk Java'da bir tamsayı (RGBA) ile temsil edilebilir.
Olivier Grégoire

@ OlivierGrégoire Hayır, RBGA değerleri için 448x448 piksel başına dört 0'a ihtiyacım var. EDIT: Hmm .. tamsayı 0-255geçerli bir RBGA değeri mi? Geçerli bir RGB değeri olduğunu biliyorum, aynı zamanda RGBA? Java'da neredeyse hiç görüntü kullanmıyorum, bu yüzden onlara aşina değilim. Sadece 4 iç 0'ımı diğer cevaplara dayandırdım.
Kevin Cruijssen

Evet, 0x00000000int'e uyan dört 0s (onaltılık olarak) . İlk 2 onaltılık rakam Alfa, sonraki 2 kırmızı, sonraki 2 yeşil, son 2 mavi. Bkz. BufferedImage.TYPE_INT_ARGB . Bir tamsayı olarak özetlenen 4 değeriniz var. Ve 0x00000000eşittir 0.
Olivier Grégoire

Bence bu ilk ~ 2 yıl içinde Java gerçekten rekabetçi olduğunu gördüm!
Shaggy

Rekabetçi .. Ayrıca, ben gibi, geçmişte birkaç diğer yarı rekabetçi Java cevapları olduğunu hala değil etrafında bu golf dilleri ile @Shaggy bu bir veya bu bir Bash geldi (ve R golfed kadar kazanıyordu onun Cevap).
Kevin Cruijssen

6

Java 8


Görüntüyü s101 bayt yollu bir dosyaya kaydetme

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

Çevrimiçi deneyin ... bir şekilde

BufferedImage Döndürme, 46 bayt

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

Görüntüyü dosyaya kaydetme f, 83 bayt

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

PNG'yi STDOUT'a 92 bayt dökümü (sadece ASCII'ye teşekkürler!)

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

Çevrimiçi deneyin!
Kevin'e ikinci ve dördüncü çözümler için bir bayt kaydettiği için teşekkürler!


2
Boş mu yoksa şeffaf mı demek istediniz?
Anush

1
Sadece stdout'a yaz
sadece ASCII

1
@ Sadece ASCII Sadece stdout'a boş (sıfırlarla dolu) 448 * 448 * 4 dizisi mi yazıyorsunuz? Her neyse, gerçek bir PNG dosyası oluşturma fikrini seviyorum.
Benjamin Urquhart

1
()->Cevaplarınızı iki tanesinde golf oynayabilirsiniz v->, çünkü boş bir kullanılmamış girişe (kişisel olarak kullandığım Void) izin verilir . Son TIO'nuz bunun yerine bu olur .
Kevin Cruijssen

1
@NahuelFouilleul çünkü birinin piksel temsili bir piksel değil gerçek bir görüntü çıkarmak istiyorum
Benjamin Urquhart

6

05AB1E , 12 10 9 bayt

448LDδ4Å0

Çevrimiçi deneyin.

Veya alternatif olarak:

¾4Ž1ÂDиии

Çevrimiçi deneyin.

@Emigna sayesinde -2 bayt . @Adnan
sayesinde -1 bayt .

0'ların 448x448x4 3D bir listesini çıkarır.

Açıklama:

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)

Benim bu 05AB1E yanıta bakın (bölüm ne kadar büyük tamsayılar sıkıştırmak için? ) Anlamak için Ž1Âolduğunu 448.


5

İşleme, 66 bayt

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

5

Python 2.7, 17 Bayt (22 Baskılı)

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

Baskı ile:

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

Değişken olarak:

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

Bir RGBA dizisine izin verildiği için, yukarıda oluşturduğum şey, varsayılan olarak tüm 0'ların varsayılanı - siyah, ancak tamamen şeffaf.

Çevrimiçi deneyin!


Yine, bununla, sadece elle çarpın ve [0]*802816bunun da çalışması gerekir.
John Hamilton

1
@JohnHamilton Yanılıyorsam beni düzeltin, ancak 3D dizisi (piksel dizisi dizisi) olması gerektiğine inanıyorum, yani dizi [piksel x koordinat] [piksel y koordinatı] [r / g / b / a]
Snaddyvitch Dispenseri

1
Oldukça kısa değil ama burada sıfırları sayısal bir diziye alan bir alternatif var ... np.zeros ([4] + [448] * 2)
P. Hopkinson

5

Jöle , 8 bayt

448ṁ4¬¥þ

448 x 448 RGBA şeffaf siyah piksel dizisi veren niladik bir bağlantı.

Çevrimiçi deneyin!

Nasıl?

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 bayt

Bu geçerli mi?

<svg height=448 width=448

Test edin ( background"görebilmek için" CSS ile uygulanır)


<svg height=448 width=448Bir html dosyasına yazma ve açma boş bir üretim olarak, bu geçerli olduğuna inanmıyorum <body>. Bununla birlikte , 1 baytlık ceza ile, yazarsanız <svg height=448 width=448>, <body>boş bir SVG görüntüsü ile bir üretir .
Ismael Miguel

@IsmaelMiguel, dilleri (amaçlanan) uygulamalarından ziyade tercümanları ile tanımlıyoruz. Kapamayı atlamamıza izin veren bir yorumlayıcının (bu durumda CodePen) mevcut olması >, işaretleme kadarıyla bunun geçerli olduğu anlamına gelir.
Shaggy

1
Codepen, çalışması için ek HTML kodu ekler. Bu bir ekler <!DOCTYPE html>, <html>, <head>, <style>, <script>ve her şey gider <body>. İstenen çıktıyı üretmek için ek kodlardan bazıları gereklidir. Sen Ortaya çıkan kod olarak ayrıştırılır görebiliriz <svg height="448" width="448" < body></svg>bunu yazıyor, çünkü <svg height=448 width=448 </body>iframe'de. Bu nedenle, hala geçerli olmadığına inanıyorum.
Ismael Miguel


5

Pas - 206 201 168 bayt

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

Bu, http://paulbourke.net/dataformats/tga/ başına TGA ikili biçimini kullanarak , genişlik ve yüksekliği ikili dosya başlığına kodlayarak, herhangi bir kütüphane veya yerleşik işlev olmadan gerçek, okunabilir bir o.tga dosyası yazar .


-5 bayt dosya adını kısalt, img boyutunu düzelt, sadece ASCII


yine de bir dosyaya yazdırılması gerekiyor mu: P
sadece ASCII

2 boyutlu olması bile gerekiyor mu? Sadece [0; 444 * 444 * 4] diyebilirim; 444x444 şeffaf bir görüntü oluşturduğumu varsayalım. ilginç kılıyorum.
parlak

iyi de adosya adı olarak işe yaramaz. btw bu 448 * 448 444 * 444 değil, bu yüzden bu geçersiz
sadece ASCII

ayy, ha ha teşekkürler
Don parlak

Daha da ilginç, koşmak uzunluk kodlamak yapmak o: p (görüntü verisi olmalıdır [255,0,0,0,0]6272 kez ( [0,0,0,0]128 kez) 6272 kez tekrarlanan görüntü türü sonra olurdu. 10değil 2hatta daha iyi, daha kısa çalışma uzunluğu kodlaması (için renk haritası. 0,0,0,0-> 0)
Sadece ASCII

4

C # (Visual C # Etkileşimli Derleyici) , 48 bayt

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

Görünüşe göre [1D array of pixels, width, height]çıktı tamam, bu yüzden bir dizi çıktı (IEnum kadar piksel, genişlik, yükseklik).

Çevrimiçi deneyin!

C # (Visual C # Etkileşimli Derleyici) , 58 bayt

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

Orijinal matris dönen cevap.

Görüntü GÇ kuralları RGB değerlerinin bir matrisi olarak çıktıya izin verdiğinden, bu gönderim, tümü 0 olan dört değer içeren tuples ile temsil edilen bir RGBA değerleri matrisi çıkarır.

Çevrimiçi deneyin!


4

PHP, 192 bayt

Ne yazık ki, PHP bu açıdan çok berbat çünkü çok fazla kod gerektiriyor. Ama sonra tekrar, PHP emmiyor.

$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

Açıkçası, sadece çıktı almadan oluşturmak istiyorsanız, header()ve readfile()komutlarını atlayabilirsiniz . Yine de, aptalca uzun.


1
Olumlu tarafı, bu tam olarak ne yaptığını gösteren en 'okunabilir' cevaplardan biridir
don parlak

@donbright Gerçekten tho kodlama değil tho. ; P Ancak, ben sadece bazı HTML yankı sürece PHP, bunu yapmak için başka bir yolu yoktur.
YU NO WORK

@YUNOWORK Kurallara göre bir diziyi dışa aktarabilirsiniz. '<?php return '.var_export(array_fill(0,952576,0),1).';';Diziyi yürütülebilir bir şekilde dışa aktarmak için kullanabilirsiniz . yapabilir php -f image.php > array.phpve başka bir yerde $array = include('array.php');tekrar kullanılabilir bir diziye sahip olabilirsiniz . Ama geçerli olup olmadığını bilmiyorum, bu yüzden alternatif olarak eklemenizi sağlıyorum. Hatta bir <?=json_encode(array_fill(0,952576,0));.
Ismael Miguel

Bu arada, 3 bayt kaydetmek trueiçin ile değiştirilebilir 1. Belgelerini okuyarak, imagepng()sadece yapabilirsiniz header('Content-type: image/png');imagepng($i);. Ben de yerini alabilir inanıyoruz $b=imagecolorallocatealpha($i,0,0,0,127);imagefill($i,0,0,$b);ile imagefill($i,0,0,imagecolorallocatealpha($i,0,0,0,127));ancak beni bu konuda teklif daha dont.
Ismael Miguel

Sadece test ettim ve <? imagecolorallocatealpha($i=imagecreate(448,448),0,0,0,127);header('Content-type: image/png');imagepng($i);saydam bir görüntü ürettim (109 bayt). Görüntüyü otomatik olarak tarayıcıya / standart çıktıya ve her şeye gönderir.
Ismael Miguel

4

Python 3.7 - PIL İthal, 30 bayt

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

Bu bir içe aktarma gerektirir, ancak soyut bir boş dizi yerine gerçek bir görüntü dosyası oluşturma ve görüntüleme avantajına sahiptir.

Açıklama:

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 (), görüntüyü varsayılan görüntü programınızda açar. Benim durumumda bu, Windows Fotoğraf Görüntüleyicisi'nde geçici bir bitmap dosyası açar, ancak sonuçlar değişebilir. Bitmap gösterimi saydamlık içermediğinden bu hile yapıyor

Varyasyonlar ...

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
İçe aktarma işleminizi saymazsanız, dilinizi Python 3.7 - PIL içe aktarılmış veya benzeri bir şey olarak belirtmelisiniz . Ayrıca, açıklamanızda büyük harf kullanırsınız Import.
Jonathan Frech

Teşekkürler, düzeltildi. Cevabımı 24 bayt, 30 veya 37 olarak vermeli miyim?
P. Hopkinson

Bayt sayısı kullandığınız dile bağlıdır. Şu andan itibaren gönderiminiz PIL içe aktarılmış Python 3 dilinde 30 bayt sürüyor . Python 3'te yazdıysanız , büyük olasılıkla daha uzun olurdu. Tabii ki, Python 3 dilini PIL ad alanının tamamı içe aktarılmış olarak kullanırsanız , cevabınız new("LA",[448]*2).show()26 bayt olacaktır.
Jonathan Frech

Kod göndermek için çok teşekkürler aslında çalıştırabilirsiniz ve hangi çıktı üreten test edebilirsiniz!
Anush

4

MATLAB, 31 bayt

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

448 x 448 değer matrisi oluşturur NaNve daha sonra imwritebunları adlandırılmış bir PNG dosyasına kaydetmek için kullanır '.png've saydamlığı 1 olarak ayarlar ve saydam yapar. 'Transparency'Parametre adı kısaltılmış yapabiliyor 'tr'MATLAB sürece kısaltılmış bir versiyonu mevcut parametreler arasında eşsizdir olarak parametre adları kısmi dize eşleşmesi için izin verdiği.


Bekle, neden 443 ??
Sadece ASCII

@ Sadece ASCII yağ parmak :)
Suever

O_o bu delicesine hızlı bir cevaptı
sadece ASCII

4

dzaima / APL + APLP5 , 18 16 bayt

{P5.img⍴∘0,⍨448}

Ekrana çizilebilen (efektsiz) veya tekrar piksel değerlerine dönüştürülebilen bir görüntü nesnesini çıktılayan işlev.

-2 sayesinde NGN !


bu işe yarar mı? {P5.img⍴∘0,⍨448}
ngn

@ngn gerçekten olur, teşekkürler!
dzaima


3

Kırmızı , 33 bayt

a: make image![448x448 0.0.0.255]

Opaklık varsayılan olarak tam opaktır (0)

Bu nasıl kullanılır / tam bir program /:

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

3

MathGolf , 10 bayt

º4♦7*_ß{.a

Çevrimiçi deneyin!

açıklama

º            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

Bu yöntem "standart" ile karşılaştırıldığında 1 bayt tasarruf sağlar ♦7*_4º*a*a*



3

SmileBASIC, 27 bayt

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

0s ile dolu 2 boyutlu 448x448 dizisini adlı bir dosyaya kaydeder DAT:I(Bir şekilde diziyi döndüren bir işlevi tanımlamaktan daha kısa)

SmileBASIC'teki renkler için standart formatlar (tüm grafik fonksiyonları tarafından kullanılır) 32 bit ARGB ve 16 bit 5551 RGBA'dır ve 0her ikisinde de şeffaftır.


Bunu siyah yerine şeffaf yapan nedir?
boru

1
Renkler 4 bayt ARGBbiçimindedir (genellikle Smilebasic'te kullanılır), 0x00000000Alpha = 0, Red = 0, Green = 0, Blue = 0 olur 0xFF000000. Siyah olur .
12Me21

RAW görüntü formatını kullanmak için SmileBasic kudos lol
don parlak

Bunun bir görüntü formatı olmadığı için teknik özellikten şikayet ederdim GRPama saklanan gerçek veriler aynı olduğu için onu bırakacağım.
snail_

@snail_ Sadece belirli bir görüntü formatı kullanmıyor, bir piksel matrisi çıkarıyor.
12Me21

3

İOS Kısayolları için ScPL , 98 bayt

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

Ekran görüntüsü

Kısayol iCloud Bağlantısı

Base64 olarak kodlanmış 1x1 şeffaf bir gif alır ve yeniden boyutlandırır


Bu ... tuhaftı ... az önce gittiğim icloud bağlantısı neydi? ?
Parlak don

@ donbright, kısayollar uygulamasından bir kısayol paylaştığınızda, bu bağlantıyı yapar
pfg

2

Jstx , 24 bayt

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

açıklama

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

Çevrimiçi deneyin!




2

C ++, SFML, 131 bayt

#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 bayt

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

"Kod snippet'ini çalıştır" tıklandığında bir IFRAME içinde 448x448 saydam PNG oluşturulur. Ardından, bilgisayarınıza indirmek için "Görüntüyü farklı kaydet ..." seçeneğini sağ tıklayabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.