Це простий виклик.
Завдання полягає в написанні коду, який виводить квадратне зображення площею 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. Потім можете клацнути правою кнопкою миші «Зберегти зображення як ...», щоб завантажити його на свій комп’ютер.