Это простая задача.
Задача состоит в том, чтобы написать код, который выводит 448 * 448 квадратных изображений со 100% прозрачностью. Вывод должен соответствовать стандартным правилам изображения .
Это простая задача.
Задача состоит в том, чтобы написать код, который выводит 448 * 448 квадратных изображений со 100% прозрачностью. Вывод должен соответствовать стандартным правилам изображения .
Ответы:
convert -size 448x448 xc:none a.png
Это разрешено?
\windows\system32).
convertинструментом, потому что имя конфликтует с системной утилитой. Ты бежишь magick convert ... вместо этого.
convertявляется частью ImageMagick, поэтому называть его собственным языком не получится.
ImageMagick Convert. Может быть стоит открыть мета об этом, хотя
Полная программа. Печатает массив 448 на 448 на 4, представляющий изображение 448 на 448 rgba.
448 448 4⍴0
⍴является г eshape
448 448?
802832p0в качестве ответа?
f=
(_=document.createElement`canvas`)=>_.toDataURL(_.height=_.width=448)
;document.write(f());
Возвращает PNG-изображение, закодированное как data: URL, подходящий, например, для установки в качестве srcof HTMLImageElement. Изменить: 3 байта сохранены благодаря @Shaggy и еще 2 байта благодаря @Arnauld.
document.createElement`canvas` должно работать, сохраняя еще 2 байта.
d=documentвверху и заменить documentна d? Следует сохранить ~ 5 символов.
document.writeявляется лишь частью фрагмента стека, а не частью функции, поэтому он все равно не считается.
v->new int[448][448][4]
Возвращает трехмерный массив 448x448x4 0 с.
Объяснение:
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]
Возвращает 448x448 матрицу 0 с.
В Java значения RGBA могут быть представлены целым числом . Шестнадцатеричное 0x00000000будет представлять 00для красного, зеленого, синего и альфа соответственно. И 0x00000000равно целому числу 0.
v->new int[448][448]? Потому что цвет может быть представлен с помощью целого числа (RGBA) в Java.
0-255является допустимым значением RBGA? Я знаю, что это действительное значение RGB, но также и RGBA? Я почти никогда не использую изображения в Java, поэтому не слишком знаком с ними. Я просто основал свои 4 внутренних 0 на других ответах.
0x00000000которые помещаются в int. Первые 2 шестнадцатеричных цифры - это альфа, следующие 2 - красные, следующие 2 - зеленые, последние 2 - синие. Так что вам нужно только целое число. См. BufferedImage.TYPE_INT_ARGB . У вас есть 4 значения, которые суммируются как одно целое число. И 0x00000000равно 0.
Сохранение изображения в файл с путем 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)
Попробуйте онлайн!
Спасибо Кевину за сохранение байта для второго и четвертого решений!
()->в два из ваших ответов v->, поскольку разрешено иметь пустой неиспользуемый ввод (для которого я лично использую Void). Тогда ваш последний TIO будет таким .
448LDδ4Å0
или альтернативно:
¾4Ž1ÂDиии
-2 байта благодаря @Emigna .
-1 байт благодаря @Adnan .
Выводит 448x448x4 3D-список 0 с.
Объяснение:
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)
Смотрите этот 05AB1E ответ моего (раздел Как сжать большие целые числа? ) , Чтобы понять , почему Ž1Âэто 448.
[[[0]*4]*488]*488
С печатью:
print[[[0]*4]*488]*488
Как переменная:
x=[[[0]*4]*488]*488
Так как массив RGBA разрешен, это то, что я создал выше, по умолчанию все 0 - то есть черный, но полностью прозрачный.
[0]*802816что также должно работать.
448ṁ4¬¥þ
Ссылка niladic, которая дает массив прозрачных черных пикселей 448 на 448 RGBA.
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]
Это действительно?
<svg height=448 width=448
Протестируйте его ( backgroundпримените с помощью CSS, чтобы вы могли «увидеть» его)
<svg height=448 width=448в html-файл и его открытие приводит к пустому <body>. Тем не менее , при значении 1 байт, если вы пишете <svg height=448 width=448>, он создает <body>пустое изображение SVG.
>означает, что это действительно допустимо в отношении разметки.
<!DOCTYPE html>, <html>, <head>, <style>, <script>и все идет к <body>. Некоторый дополнительный код необходим для получения желаемого результата. Вы можете видеть, что полученный код анализируется как <svg height="448" width="448" < body></svg>, потому что он пишет <svg height=448 width=448 </body>в iframe. Таким образом, я все еще верю, что это не верно.
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 без каких-либо библиотек или встроенных функций с использованием двоичного формата TGA в соответствии с http://paulbourke.net/dataformats/tga/ путем жесткого кодирования ширины и высоты в заголовке двоичного файла.
-5 байт сокращают имя файла, исправляют размер img, @ ASCII-only
aбудет работать как имя файла не так ли. Кстати , это 448 * 448 не 444 * 444 , так что это недопустимое
[255,0,0,0,0]6272 раза ( [0,0,0,0]128 раз, повторяется 6272 раза). Тогда тип изображения будет 10не так 2. даже лучше, карта цветов для кодирования с более короткой длиной прогона ( 0,0,0,0-> 0)
_=>(Enumerable.Repeat((0,0,0,0),200704),448,448)
Видимо, с выводом [1D array of pixels, width, height]все в порядке, поэтому выводится кортеж `(IEnumerable из пикселей, ширины, высоты).
_=>Enumerable.Repeat(Enumerable.Repeat((0,0,0,0),448),448)
Исходная матрица, возвращающая ответ.
Поскольку правила ввода-вывода изображения разрешают вывод в виде матрицы значений RGB, эта отправка выводит матрицу значений RGBA, представленных кортежами с четырьмя значениями, причем все они равны 0.
К сожалению, 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');
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
Очевидно, что если вы просто хотите создать его без вывода его можно опустить header()и readfile()команду. Тем не менее, это идиотски долго.
'<?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));.
trueможно заменить на 1, чтобы сохранить 3 байта. Читая документацию 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));но не цитируйте меня на этом.
<? imagecolorallocatealpha($i=imagecreate(448,448),0,0,0,127);header('Content-type: image/png');imagepng($i);выдает прозрачное изображение (109 байт). Автоматически отправляет изображение в браузер / стандартный вывод и все.
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 Photo Viewer, но результаты могут отличаться. Возможно, это обман, так как растровое представление не содержит прозрачности
Вариации ...
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 байтов.
imwrite(nan(448),'.png','tr',1)
Создает матрицу NaNзначений 448 x 448 , а затем использует ее imwriteдля сохранения их в PNG-файле с именем '.png'и устанавливает прозрачность на 1, делая ее прозрачной. Имя 'Transparency'параметра может быть сокращено до 'tr'MATLAB, позволяющего частичное совпадение строк с именами параметров, если сокращенная версия является уникальной среди доступных параметров.
{P5.img⍴∘0,⍨448}
Функция, которая выводит объект изображения, который можно нарисовать на экране (без эффекта) или преобразовать обратно в значения пикселей.
-2 спасибо нгн !
{P5.img⍴∘0,⍨448}
2¡может быть⁺
a: make image![448x448 0.0.0.255]
Непрозрачность по умолчанию полностью непрозрачна (0)
Вот как это использовать / полная программа /:
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
Этот метод экономит 1 байт по сравнению со «стандартным» ♦7*_4º*a*a*
_=>[w=448,w,Array(w*w).fill([0,0,0,0])]
Видимо вывод [height, width, 1d array of RGBA values]в порядке.
-3 байта благодаря @Arnauld
[1D array of pixels, width, height]
DIM A[448,448]SAVE"DAT:I",A
Сохраняет двумерный массив 448x448, заполненный нулями, в файл с именем DAT:I (что короче, чем определение функции, возвращающей массив, как-то)
Стандартные форматы (используемые всеми графическими функциями) для цветов в SmileBASIC: 32-битный ARGB и 16-битный 5551 RGBA, и они 0прозрачны в обоих.
ARGBбайтовом формате (обычно используется в Smilebasic), так 0x00000000что Alpha = 0, Red = 0, Green = 0, Blue = 0. Черный 0xFF000000.
GRPно я позволю ему уйти, поскольку фактические данные сохраняются одинаково.
Text"R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
Base64Encode Decode
ResizeImage 448
Принимает прозрачный GIF 1x1 в кодировке base64 и изменяет его размер
♪☺ü@/ø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.
#include <SFML/Graphics.hpp>
void f(){sf::Image i;i.create(448,448);i.createMaskFromColor(sf::Color::Black);i.saveToFile("a.png");}
Нажатие «Выполнить фрагмент кода» сгенерирует прозрачный PNG 448x448 в IFRAME. Затем вы можете щелкнуть правой кнопкой мыши «Сохранить изображение как ...», чтобы загрузить его на свой компьютер.