Це простий виклик.
Завдання полягає в написанні коду, який виводить квадратне зображення площею 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 rgba.
448 448 4⍴0
⍴
є r eshape
448 448
?
802832p0
як відповідь?
f=
(_=document.createElement`canvas`)=>_.toDataURL(_.height=_.width=448)
;document.write(f());
Повертає PNG зображення кодується як дані: URL підходить , наприклад , для установки в якості src
Ап HTMLImageElement
. Редагувати: збережено 3 байти завдяки @Shaggy та ще 2 байти завдяки @Arnauld.
document.createElement`canvas`
повинен працювати, заощаджуючи ще 2 байти.
d=document
у верхній частині та замінити document
на d
? Слід зберегти ~ 5 символів.
document.write
лише частина фрагмента стека, а не частина функції, тому вона все одно не рахується.
v->new int[448][448][4]
Повертає 3D-масив розміром 448x448x4 0s.
Пояснення:
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))
Спробуйте в Інтернеті ... якось
повернення BuferiImage, 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 з 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¬¥þ
Ніладична посилання, що дає 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>
. Однак , якщо ви пишете <svg height=448 width=448>
, розмір 1 байт, якщо він пише , він створює <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
a
буде працювати, як ім'я файлу, як ні. btw, це 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]
виходить нормально, так що виводиться кортеж `(IEumerable of pixels, width, height).
_=>Enumerable.Repeat(Enumerable.Repeat((0,0,0,0),448),448)
Оригінальна відповідь, що повертається на матрицю.
Оскільки правила IO зображення дозволяють виводити матрицю значень 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');
Безголівки:
$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, що забезпечує часткове узгодження рядків імен параметрів до тих пір, поки скорочена версія є унікальною серед доступних параметрів.
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, заповнений 0, у файл з назвою DAT:I
(Що коротше, ніж визначення функції, яка якось повертає масив)
Стандартні формати (використовувані всіма графічними функціями) для кольорів у SmileBASIC - це 32-бітний ARGB і 16-бітний 5551 RGBA, і 0
в обох вони прозорі.
ARGB
байтному форматі (зазвичай використовується в Smilebasic), так 0x00000000
це Альфа = 0, Червоний = 0, Зелений = 0, Синій = 0. Чорний буде 0xFF000000
.
GRP
але я відпущу його, оскільки фактичні дані, що зберігаються, однакові.
Text"R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
Base64Encode Decode
ResizeImage 448
Візьме 1х1 прозорий gif, закодований як 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. Потім можете клацнути правою кнопкою миші «Зберегти зображення як ...», щоб завантажити його на свій комп’ютер.