透明な448 * 448画像を作成する


10

これは簡単な挑戦です。

タスクは、100%の透明度で448 * 448の正方形の画像を出力するコードを記述することです。出力は、標準のイメージルールに従う必要があります


7
透明な(見えない)画像を画面に「出力」する0バイトの回答を送信しないようにするにはどうすればよいですか。
12Me21

9
@ 12Me21それは448 * 448でしょうか?
アヌッシュ

2
これは、stackoverflowに関する閉じた質問のパロディですか(または少なくとも刺激を受けていますか)?
FOON

2
448 pxの何が特別なのですか?
dan04

1
@Foon間違いなくパロディではありませんが、確かに私はSOについて尋ねるのに十分興味があり、それがここではるかに楽しいことになることに気づきました。
アヌッシュ

回答:


28

一部のシェルのImagemagick、35

convert -size 448x448 xc:none a.png

これは許可されますか?


5
バッシュ?私がそれをテストしたときにそれが私が使ったものです。POSIXシェルは動作するはずですか?
vityavv

3
Windowsでも機能します(ImageMagickがの前のパスにある場合\windows\system32)。
CL。

1
Windowsでは、ImageMagickはconvertツールに同梱されていません。名前がシステムユーティリティと競合するためです。magick convert ... 代わりに実行します。
n0rd

1
@SztupY convertはImageMagickの一部であるため、独自の言語を呼び出しても機能しません。
vityavv

1
それは独自のコマンドです。使用している言語はとだけ言えますImageMagick Convert。それについてのメタを開く価値があるかもしれません
SztupY

15

APL(Dyalog Unicode)、11 バイトSBCS

完全なプログラム。448 x 448 x rgbaイメージを表す448 x 448 x 4の配列を出力します。

448 448 40

オンラインでお試しください!

あるRの eshapeは、


私はAPLをまったく知りませんが、ゴルフするための複製はないの448 448でしょうか?
Kevin Cruijssen

448 * 448 = 200704、つまり、448 448で区切られたスペースを200704に置き換えて、1バイトを節約できませんか?
NaCl

1
@NaClその場合は、なぜそれを4倍し802832p0て答えを返さないのですか?
John Hamilton

@NaClこれは、デフォルトのルールで有効な画像形式ではないためです
アダム

@JohnHamilton NaClに対する私の回答と同じ理由で。
アダム

8

行く、70

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

囲碁でゴルフを見たことがない。画像を出力すると呼ばれる関数を定義します


2
Go-lfと呼びます。
スカイラー

6

JavaScript(ES6)、74 69バイト

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

戻り値のデータとしてエンコードされたPNG画像:として設定するためのURL適し例えばsrcHTMLImageElement。編集:@Shaggyのおかげで3バイト、@ Arnauldのおかげでさらに2バイト節約されました。



2
document.createElement`canvas` 動作し、さらに2バイト節約されます。
Arnauld

1
createelementが有効な場合、document.bodyが表示され、IDが変数になるという事実を使用すると、有効になりますか?また、スタックスニペットpls
ASCIIのみ

1
あなたのような何かを追加することができますd=document上部にあると置き換えるdocumentd?5文字まで保存する必要があります。
ルーク

1
@Luke The document.writeはスタックスニペットの一部であり、関数の一部ではないため、とにかくカウントされません。
Neil

6

Java 8、23(または20)バイト

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

448x448x4 0の3D配列を返します。

オンラインでお試しください。

説明:

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の448x448行列を返します。

Javaでは、RGBA値は整数表すことができます。16進数0x0000000000、それぞれ赤、緑、青、アルファを表します。そして0x00000000、整数に等しい0です。

オンラインでお試しください。


ああああ、それが大好きです:-)単純に動作しませんv->new int[448][448]か?なぜなら、色はJavaでは整数(RGBA)で表すことができるからです。
OlivierGrégoire19年

@OlivierGrégoireいいえ、RBGA値には、448x448ピクセルあたり4つの0が必要です。編集:うーん..整数0-255は有効なRBGA値ですか?有効なRGB値であることがわかっていますが、RGBAでもありますか?私はJavaで画像を使用することはほとんどないので、あまり慣れていません。私は単に、他の答えに基づいて4つの内部0を基にしています。
Kevin Cruijssen

はい、0x00000000intに適合する4つの0(16進数)。16進数の最初の2桁はアルファ、次の2桁は赤、次の2桁は緑、最後の2桁は青なので、整数だけが必要です。BufferedImage.TYPE_INT_ARGBを参照してください。4つの値があり、1つの整数として要約されます。そして0x00000000に等しい0
OlivierGrégoire19年

これは2年以内で初めてだと思います。Javaが実際に競争力があるのを見てきました。
Shaggy

それは競争力のある...また、私は次のように、過去にいくつかの他の半競争力のJavaの答えを持っていたことはまだありません周りこれらのゴルフの言語で@Shaggy この1、またはこの1バッシュが現れた(とRがgolfedまで勝ったその回答)。
Kevin Cruijssen

6

Java 8


パスsが101バイトのファイルに画像を保存する

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

オンラインでお試しください...なんとかし

てBufferedImageを返します、46バイト

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

画像をファイルに保存f、83バイト

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

PNGをSTDOUTにダンプ、92バイト(ASCIIのみに感謝!)

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

オンラインでお試しください!
2番目と4番目のソリューションのバイトを節約してくれたKevinに感謝します。


2
空または透明ですか?
アヌッシュ

1
stdoutに書き込む
だけ

1
@ASCIIのみそれでは、空の(ゼロで埋められた)448 * 448 * 4配列をstdoutに書き込みますか?とにかく、私は実際のPNGファイルを作成するアイデアが好きです。
ベンジャミンアー

1
空の未使用の入力(私が個人的に使用しているもの)を使用することが許可されている()->ためv->、への2つの回答でゴルフをすることができます。その場合最後のTIOは代わりこれになります。Void
Kevin Cruijssen

1
@NahuelFouilleulは、1つのピクセルごとの表現ではなく、実際のイメージを出力したいためです
ベンジャミンアー

6

05AB1E12 10 9 バイト

448LDδ4Å0

オンラインでお試しください。

または代わりに:

¾4Ž1ÂDиии

オンラインでお試しください。

@Emignaのおかげで-2バイト。@Adnanの
おかげで-1バイト。

0の448x448x4 3Dリストを出力します。

説明:

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)

理由を理解するにŽ1Â、私の05AB1E回答(「大きな整数を圧縮する方法」のセクション参照してください448


5

処理、66バイト

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

5

Python 2.7、17バイト(22(印刷あり))

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

プリントあり:

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

変数として:

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

RGBAの配列が許可されているので、これは上記で作成したもので、デフォルトはすべて0です。つまり、黒を意味しますが、完全に透明です。

オンラインでお試しください!


この場合も、手動で乗算するだけで、問題[0]*802816なく動作するはずです。
ジョンハミルトン

1
@JohnHamilton私が間違っている場合は私を修正しますが、3D配列(ピクセルの行の配列)、つまりarray [pixel x coord] [pixel y coord] [r / g / b / a]
Snaddyvitchディスペンサー

1
それほど簡潔ではありませんが、ここで、ゼロを乱暴な配列に入れる代替案があります... np.zeros([4] + [448] * 2)
P.ホプキンソン


5

HTML、25バイト

これは有効ですか?

<svg height=448 width=448

テストbackgroundCSSを使用して適用されるため、「見る」ことができます)


<svg height=448 width=448htmlファイルに書き込んでそれを開くと空のが生成されるため、これが有効であるとは思いません<body>ただし、ペナルティが1バイトであるため<svg height=448 width=448>、を書き込む<body>と、SVG画像が空のが生成されます。
Ismael Miguel

@IsmaelMiguelは、言語を(意図した)実装ではなく、インタープリターで定義します。クロージングを省略できるインタープリターが存在する(この場合はCodePen)ことは>、マークアップに関する限り、これが実際に有効であることを意味します。
Shaggy

1
Codepenはそれを動作させるために追加のHTMLコードを追加します。これは、追加<!DOCTYPE html><html><head><style><script>、すべてがに行きます<body>。追加コードの一部は、目的の出力を生成するために必要です。結果のコードはiframe <svg height="448" width="448" < body></svg>に書き込むため、として解析されることがわかり<svg height=448 width=448 </body>ます。そのため、それはまだ有効ではないと私は信じています。
Ismael Miguel


5

さび- 206の 201 168バイト

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

これは、ライブラリや組み込み関数を使用せずに、実際の読み取り可能なo.tgaファイルを書き込みます。 http://paulbourke.net/dataformats/tga/ハードバイナリファイルヘッダに幅と高さを符号化することによって、。


-5バイトでファイル名を短縮、imgサイズを修正、@ ASCIIのみ


しかし、それはファイルに出力する必要がありますか:P
ASCIIのみ

それは2次元である必要さえありますか?[0; 444 * 444 * 4]とだけ言ってください。そして、私は444x444の透明な画像を作成したと言います。私はそれを面白くしています。
明るい

ほかにもa、ファイル名はそれではないと同じように動作します。ところで、それは444 * 444ではなく448 * 448なので、これは無効です
ASCIIのみ

おっと、ハッハッハ
明るく明るい

さらに興味深いものにするには、ランレングスエンコードします:P(画像データは[255,0,0,0,0]6272回([0,0,0,0]128回、繰り返し6272回)である必要があります。イメージタイプは。より良くあり10ません2。より短いランレングスエンコーディングのカラーマップ(0,0,0,0-> 0
ASCIIのみ

4

C#(Visual C#Interactive Compiler)、48バイト

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

どうやら出力 [1D array of pixels, width, height]は問題ないので、これは `(IEnumerable of pixels、width、height)のタプルを出力します。

オンラインでお試しください!

C#(Visual C#Interactive Compiler)、58バイト

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

答えを返す元の行列。

画像のIOルールでは、RGB値のマトリックスとしての出力が許可されているため、この送信では、すべて0の4つの値を持つタプルで表されるRGBA値のマトリックスが出力されます。

オンラインでお試しください!


4

PHP、192バイト

悲しいことに、PHPはそれがかなりの量のコードを必要とするので、その点でちょっと面倒です。しかし、それでも、PHPが不便なところはありません。

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

非ゴルフ:

$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

もちろん、出力せずに作成したいだけの場合は、header()and readfile()コマンドを省略できます。それでも、それはばかげて長いです。


1
プラス側に、これは、そのがやって正確に何を示している最も「読める」の答えの一つである
明るいドン

@donbright本当にコードゴルフのポイントではありません。; Pただし、HTMLをエコーするだけでない限り、PHPでこれを行う方法は他にありません。
YU NO WORK

@YUNOWORKルールに従って、配列をエクスポートできます。を使用'<?php return '.var_export(array_fill(0,952576,0),1).';';して、アレイを実行可能な方法でエクスポートできます。あなたがすることができますphp -f image.php > array.php、そしてどこか他の場所で$array = include('array.php');再び使用可能な配列を持つことができます。しかし、それが有効であるかどうかはわかりません。そのため、代替として追加することをお伝えします。または<?=json_encode(array_fill(0,952576,0));
Ismael Miguel

ちなみに、3バイトを節約するために、trueと置き換えることができ1ます。のドキュメントを読んでimagepng()、あなたはただ行うことができますheader('Content-type: image/png');imagepng($i);。私はあなたにも置き換えることができると信じ$b=imagecolorallocatealpha($i,0,0,0,127);imagefill($i,0,0,$b);imagefill($i,0,0,imagecolorallocatealpha($i,0,0,0,127));それで私を引用してはいけません。
Ismael Miguel

テスト<? imagecolorallocatealpha($i=imagecreate(448,448),0,0,0,127);header('Content-type: image/png');imagepng($i);して透明な画像(109バイト)を作成しました。画像をブラウザ/標準出力などすべてに自動的に送信します。
Ismael Miguel

4

Python 3.7-PILインポート、30バイト

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

これにはインポートが必要ですが、抽象的な空の配列ではなく実際の画像ファイルを作成して表示するという利点があります。

説明:

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()は、デフォルトの画像プログラムで画像を開きます。私の場合、これは一時的なビットマップファイルをWindowsフォトビューアーで開きますが、結果が異なる場合があります。ビットマップ表現に透明度が含まれていないため、間違いなくこれは不正行為です

バリエーション...

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
インポートを数えない場合は、言語をPython 3.7-PILインポートまたは同様のものとして記述する必要があります。さらに、あなたの説明では大文字にしImportます。
Jonathan Frech

ありがとう、修正しました。私の答えは24バイト、30または37のどちらにする必要がありますか?
P.ホプキンソン

バイト数は、使用する言語によって異なります。現在のところ、PILがインポートされたPython 3言語での提出には30バイトかかります。Python 3で書いた場合、おそらくもっと長くなります。もちろん、PIL名前空間全体をインポートしてPython 3言語を使用するとnew("LA",[448]*2).show()、答えは26バイトになります。
Jonathan Frech

実際に実行できるコードを送信していただき、ありがとうございます。テストできる出力が生成されます。
アヌッシュ

4

MATLAB、31バイト

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

NaN値の448 x 448行列を作成し、を使用imwriteしてそれらを名前の付いたPNGファイルに保存し'.png'、透明度を1に設定して透明にします。'Transparency'パラメータ名は略称することが可能である'tr'MATLABは限り短縮版が使用可能なパラメータの中で一意であるとしてパラメータ名の部分文字列マッチングが可能になりますよう。


待って、なぜ443?
ASCIIのみ


めちゃくちゃ速い返答だったO_o
ASCIIのみ

4

dzaima / APL + APLP518の 16バイト

{P5.img⍴∘0,⍨448}

画面に描画(効果なし)またはピクセル値に変換し直すことができる画像オブジェクトを出力する関数。

-2 ngnに感謝!


これはうまくいくでしょうか?{P5.img⍴∘0,⍨448}
ngn '15年

@ngn本当にそうでしょう、ありがとう!
dzaima


3

、33バイト

a: make image![448x448 0.0.0.255]

不透明度のデフォルトは完全に不透明(0)

これは/ a fullプログラム/の使い方です:

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

3

MathGolf、10バイト

º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

このメソッドは、「標準」と比較して1バイトを節約します ♦7*_4º*a*a*


3

JavaScript(Node.js)、39バイト

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

どうやら出力[height, width, 1d array of RGBA values]は問題ありません。

オンラインでお試しください!

@Arnauldのおかげで-3バイト


無効...文字列のリスト
ASCIIのみ

また、出力することもできます[1D array of pixels, width, height]
ASCIIのみ


41バイト、または出力できる場合は39バイト[width, height, array]
Arnauld

3

SmileBASIC、27バイト

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

0で埋められた2次元の448x448配列をという名前のファイルに保存しますDAT:I(これは、配列を返す関数を定義するよりも短いです)

SmileBASICの色の(すべてのグラフィックス機能で使用される)標準形式は、32ビットARGBと16ビット5551 RGBAであり0、どちらも透明です。


これを黒ではなく透明にするのは何ですか?
パイプ

1
色は4バイトARGB形式(一般にSmilebasicで使用されます)0x00000000なので、アルファ= 0、赤= 0、緑= 0、青= 0 0xFF000000です。黒はです。
12Me21

RAW画像フォーマットを使用するためSmileBasicに賛辞笑
明るいドン

これは画像形式ではないので技術的なものだと文句を言いGRPますが、保存されている実際のデータは同じであるため、そのままにしておきます。
snail_

@snail_特定の画像形式を使用せずに、ピクセルのマトリックスを出力するだけです。
12Me21

3

ScPL for iOS Shortcuts、98バイト

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

スクリーンショット

ショートカットiCloudリンク

base64としてエンコードされた1x1透明gifを受け取り、サイズを変更します


それは...奇妙だった...先に行ったicloudリンクは何ですか??
明るく明るい

@donbrightショートカットアプリからショートカットを共有すると、そのリンクが作成されます
pfg

2

Jstx、24 バイト

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

説明

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

オンラインでお試しください!




2

C ++、SFML、131バイト

#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バイト

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

[コードスニペットの実行]をクリックすると、IFRAMEに448x448の透過PNGが生成されます。次に、[名前を付けて画像を保存]を右クリックして、コンピュータにダウンロードします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.