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 .
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 .
Yanıtlar:
convert -size 448x448 xc:none a.png
Buna izin veriliyor mu?
\windows\system32
).
convert
ad sistem yardımcı programıyla çakıştığından, araçla birlikte gönderilmiyor . Onun magick convert ...
yerine kaçıyorsun.
convert
ImageMagick'in bir parçasıdır, bu yüzden kendi dili olarak adlandırmak işe yaramaz.
ImageMagick Convert
. Bununla ilgili bir meta açmaya değer olabilir
Tam program. 448 x 448 rgba görüntüsünü temsil eden 448 x 448 x 4 dizisini yazdırır.
448 448 4⍴0
⍴
bir r eshape
448 448
?
802832p0
cevap olarak vermiyoruz?
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 src
bir bir HTMLImageElement
. Düzenleme: @Shaggy sayesinde 3 bayt ve @Arnauld sayesinde 2 bayt daha kaydetti.
document.createElement`canvas`
2 bayt daha tasarruf etmeli.
d=document
En üste benzer bir şey ekleyebilir ve document
onunla değiştirebilir d
misiniz? ~ 5 karakter kaydetmelidir.
document.write
fonksiyonun bir parçası değil, yığın snippet'inin bir parçasıdır, bu yüzden yine de sayılmaz.
v->new int[448][448][4]
448x448x4 0'lık 3B bir dizi döndürür.
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 0x00000000
temsil edeceğini 00
sırasıyla kırmızı, yeşil, mavi ve alfa için. Ve 0x00000000
tamsayıya eşittir0
.
v->new int[448][448]
? Çünkü bir renk Java'da bir tamsayı (RGBA) ile temsil edilebilir.
0-255
geç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.
0x00000000
int'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 0x00000000
eşittir 0
.
Görüntüyü s
101 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!
()->
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 .
448LDδ4Å0
Veya alternatif olarak:
¾4Ž1ÂDиии
@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
.
[[[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.
[0]*802816
bunun da çalışması gerekir.
448ṁ4¬¥þ
448 x 448 RGBA şeffaf siyah piksel dizisi veren niladik bir bağlantı.
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]
Bu geçerli mi?
<svg height=448 width=448
Test edin ( background
"görebilmek için" CSS ile uygulanır)
<svg height=448 width=448
Bir 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 .
>
, işaretleme kadarıyla bunun geçerli olduğu anlamına gelir.
<!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.
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
a
dosya adı olarak işe yaramaz. btw bu 448 * 448 444 * 444 değil, bu yüzden bu geçersiz
[255,0,0,0,0]
6272 kez ( [0,0,0,0]
128 kez) 6272 kez tekrarlanan görüntü türü sonra olurdu. 10
değil 2
hatta daha iyi, daha kısa çalışma uzunluğu kodlaması (için renk haritası. 0,0,0,0
-> 0
)
_=>(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).
_=>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.
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.
'<?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.php
ve 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));
.
true
iç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.
<? 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.
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
Import
.
new("LA",[448]*2).show()
26 bayt olacaktır.
imwrite(nan(448),'.png','tr',1)
448 x 448 değer matrisi oluşturur NaN
ve daha sonra imwrite
bunları 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.
x4Wẋ448Ɗ⁺
448x448x4 dizisi çıktılar
Bir baytı kaydettiği için @JonathanAllan'a teşekkürler.
2¡
olabilir⁺
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 ]
º4♦7*_ß{.a
º 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*
_=>[w=448,w,Array(w*w).fill([0,0,0,0])]
Görünüşe göre çıktı [height, width, 1d array of RGBA values]
tamam.
@Arnauld sayesinde -3 bayt
[1D array of pixels, width, height]
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 0
her ikisinde de şeffaftır.
ARGB
biçimindedir (genellikle Smilebasic'te kullanılır), 0x00000000
Alpha = 0, Red = 0, Green = 0, Blue = 0 olur 0xFF000000
. Siyah olur .
GRP
ama saklanan gerçek veriler aynı olduğu için onu bırakacağım.
Text"R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
Base64Encode Decode
ResizeImage 448
Base64 olarak kodlanmış 1x1 şeffaf bir gif alır ve yeniden boyutlandırır
♪☺ü@/ø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.
#include <SFML/Graphics.hpp>
void f(){sf::Image i;i.create(448,448);i.createMaskFromColor(sf::Color::Black);i.saveToFile("a.png");}
"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.