यह एक सरल चुनौती है।
कार्य कोड लिखना है जो 100% पारदर्शिता के साथ 448 * 448 वर्ग छवि को आउटपुट करता है। आउटपुट को मानक छवि नियमों का पालन करना चाहिए ।
यह एक सरल चुनौती है।
कार्य कोड लिखना है जो 100% पारदर्शिता के साथ 448 * 448 वर्ग छवि को आउटपुट करता है। आउटपुट को मानक छवि नियमों का पालन करना चाहिए ।
जवाबों:
convert -size 448x448 xc:none a.png
क्या यह अनुमति है?
\windows\system32
)।
convert
टूल के साथ शिप नहीं किया जा रहा है , क्योंकि नाम सिस्टम उपयोगिता के साथ टकराता है। आप magick convert ...
इसके बजाय दौड़ें ।
convert
ImageMagick का हिस्सा है, इसलिए इसे अपनी भाषा कहने से काम नहीं चलेगा।
ImageMagick Convert
। हालांकि इसके बारे में एक मेटा खोलने लायक हो सकता है
पूरा कार्यक्रम। 448-दर-448 आरजीबीए छवि का प्रतिनिधित्व करते हुए 448-दर-448-दर -4 सरणी।
448 448 4⍴0
⍴
है आर eshape
448 448
?
802832p0
उत्तर के रूप में?
f=
(_=document.createElement`canvas`)=>_.toDataURL(_.height=_.width=448)
;document.write(f());
रिटर्न एक PNG छवि एक डेटा के रूप में एन्कोड: के रूप में स्थापित करने के लिए यूआरएल उपयुक्त जैसे src
एक के HTMLImageElement
। संपादित करें: सहेजे गए 3 बाइट्स @ शुगि के लिए और आगे 2 बाइट्स थैंक्स टू @Arnauld।
document.createElement`canvas`
काम करना चाहिए, 2 और बाइट्स की बचत।
d=document
शीर्ष पर कुछ जोड़ सकते हैं और इसके document
साथ बदल सकते हैं d
? ~ 5 अक्षर बचाना चाहिए।
document.write
स्टैक स्निपेट का सिर्फ एक हिस्सा है, फ़ंक्शन का हिस्सा नहीं है, इसलिए यह वैसे भी गिनती नहीं करता है।
v->new int[448][448][4]
448x448x4 0 के 3 डी सरणी देता है।
स्पष्टीकरण:
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]
0s का 448x448 मैट्रिक्स लौटाता है।
जावा में, RGBA मूल्यों को एक पूर्णांक द्वारा दर्शाया जा सकता है । हेक्साडेसिमल क्रमशः लाल, हरे, नीले और अल्फा के लिए 0x00000000
प्रतिनिधित्व करेगा 00
। और 0x00000000
पूर्णांक के बराबर है 0
।
v->new int[448][448]
? क्योंकि जावा में एक रंग को एक पूर्णांक (RGBA) के साथ दर्शाया जा सकता है।
0-255
एक मान्य RBGA मान है? मुझे पता है कि यह एक मान्य RGB मान है, लेकिन RGBA भी? मैं लगभग कभी भी जावा में छवियों का उपयोग नहीं करता हूं, इसलिए उनके साथ बहुत परिचित नहीं हैं। मैं बस अपने 4 आंतरिक 0s को अन्य उत्तरों पर आधारित करता हूं।
0x00000000
जो एक इंट पर फिट होते हैं। पहले 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))
इसे ऑनलाइन आज़माएं ... किसी तरह
रिटर्निंग द बफर्डइमेज, 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 बाइट @ @ अदनान को धन्यवाद ।
0 के 448x448x4 3 डी सूची को आउटपुट करता है।
स्पष्टीकरण:
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
आरजीबीए के एक सरणी के रूप में अनुमति दी गई है, जो कि मैंने ऊपर बनाया है, सभी 0 के डिफ़ॉल्ट रूप से - जिसका अर्थ काला है, लेकिन पूरी तरह से पारदर्शी है।
[0]*802816
कि काम भी करना चाहिए।
448ṁ4¬¥þ
एक निलाडिक लिंक, जो पारदर्शी ब्लैक पिक्सल्स के 448 RGBA सरणी द्वारा 448 का उत्पादन करता है।
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
सीएसएस के साथ लागू किया जाता है ताकि आप इसे "देख सकें")
<svg height=448 width=448
एक html फ़ाइल में लिखने और इसे खोलने से एक खाली उत्पादन होता है <body>
। हालांकि , 1 बाइट की तपस्या के साथ, यदि आप लिखते हैं <svg height=448 width=448>
, तो यह <body>
एक खाली एसवीजी छवि के साथ पैदा करता है ।
>
इसका मतलब है कि यह वास्तव में वैध है, जहां तक मार्कअप जाता है।
<!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);}
यह किसी भी पुस्तकालयों या बिल्टिन कार्यों के बिना, एक वास्तविक, पठनीय ओ.टेगा फ़ाइल लिखता है, बाइनरी फ़ाइल हेडर में चौड़ाई और ऊंचाई को हार्ड कोडिंग करके http://paulbourke.net/dataformats/tga/ प्रति 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]
उत्पादन ठीक है, इसलिए यह `(पिक्सल, चौड़ाई, ऊंचाई के IEnumerable) के एक tuple आउटपुट।
_=>Enumerable.Repeat(Enumerable.Repeat((0,0,0,0),448),448)
मूल मैट्रिक्स लौटने का जवाब।
चूंकि छवि आईओ नियम आरजीबी मूल्यों के एक मैट्रिक्स के रूप में आउटपुट की अनुमति देते हैं, इसलिए यह सबमिशन आरजीबीए मूल्यों के एक मैट्रिक्स को आउटपुट करता है, जिसका प्रतिनिधित्व चार मानों के साथ ट्यूपल्स द्वारा किया जाता है, सभी 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
। 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 बाइट्स) का परीक्षण और निर्माण किया है । स्वचालित रूप से ब्राउज़र / मानक आउटपुट और सब कुछ के लिए छवि भेजता है।
पायथन 3.7 - पीआईएल आयातित, 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 () आपके डिफ़ॉल्ट छवि कार्यक्रम में छवि को खोल देगा। मेरे मामले में यह विंडोज फोटो व्यूअर में एक अस्थायी बिटमैप फ़ाइल खोलता है लेकिन परिणाम भिन्न हो सकते हैं। संभवतः यह धोखा है क्योंकि बिटमैप प्रतिनिधित्व में कोई पारदर्शिता नहीं है
बदलाव ...
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)
448 x 448 मैट्रिक्स के NaN
मान बनाता है , और फिर imwrite
उन्हें पीएनजी नाम की फ़ाइल में सहेजने के लिए उपयोग करता है '.png'
और पारदर्शिता को 1 पर सेट करता है, जिससे यह पारदर्शी हो जाता है। 'Transparency'
पैरामीटर नाम को संक्षिप्त किया जा करने में सक्षम है 'tr'
के रूप में MATLAB रूप में लंबे समय छोटा संस्करण उपलब्ध मापदंडों के बीच अद्वितीय है के रूप में पैरामीटर नामों में से आंशिक स्ट्रिंग मिलान के लिए अनुमति देता है।
{P5.img⍴∘0,⍨448}
ऐसा फ़ंक्शन जो छवि ऑब्जेक्ट को आउटपुट करता है जिसे स्क्रीन पर (बिना किसी प्रभाव के) खींचा जा सकता है या पिक्सेल मानों में वापस परिवर्तित किया जा सकता है।
-2 ngn को धन्यवाद !
{P5.img⍴∘0,⍨448}
x4Wẋ448Ɗ⁺
एक 448x448x4 सरणी आउटपुट
एक बाइट को बचाने के लिए @JonathanAllan को धन्यवाद।
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
एक 2-आयामी 448x448 सरणी को 0s से भरी हुई फ़ाइल में सहेजता है DAT:I
(जो किसी फ़ंक्शन को परिभाषित करने से कम है, जो किसी भी तरह से सरणी लौटाता है)
SmileBASIC में रंगों के लिए मानक प्रारूप (सभी ग्राफिक्स फ़ंक्शंस द्वारा प्रयुक्त) 32 बिट ARGB और 16 बिट 5551 RGBA हैं, और 0
इन दोनों में पारदर्शी है।
ARGB
प्रारूप में होते हैं (आमतौर पर स्माइलबेसिक में उपयोग किए जाते हैं), इसलिए 0x00000000
अल्फा = 0, लाल = 0, हरा = 0, नीला = 0. काला होगा 0xFF000000
।
GRP
लेकिन मैं इसे जाने दूंगा क्योंकि वास्तविक डेटा संग्रहीत किया जा रहा है।
Text"R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
Base64Encode Decode
ResizeImage 448
बेस 1 के रूप में एन्कोडेड 1x1 पारदर्शी गिफ लेता है और इसे आकार देता है
♪☺ü@/ø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");}
"रन कोड स्निपेट" पर क्लिक करने से IFRAME में 448x448 पारदर्शी PNG उत्पन्न होगा। फिर आप इसे अपने कंप्यूटर पर डाउनलोड करने के लिए "Save as as ..." पर राइट-क्लिक कर सकते हैं।