पर्ल और जीडी के साथ अपनी नसों को हिलाएं

प्रस्तावना


मैं उन लोगों में से एक हूं जो अक्सर तनावपूर्ण स्थितियों के संपर्क में रहते हैं। तनाव से छुटकारा पाने के कई तरीके हैं। इस विषय में मैं आपको दिखाऊंगा कि मैं यह कैसे करता हूं।

यह मेरे साथ कैसे हुआ?


एक बार, इंटरनेट पर सर्फिंग करते समय, मैं एक अद्भुत छवि में आया था - इसकी एक ठोस काली पृष्ठभूमि थी, बेतरतीब ढंग से बिखरी हुई रेखाएं और गर्म-वायलेट रंग के डॉट्स। मैंने कल्पना करने की कोशिश की कि इस छवि में क्या दर्शाया जा सकता है। छवि ने कोई शब्दार्थ भार नहीं उठाया, लेकिन यह देखने के लिए आश्चर्यजनक रूप से सुखद था। मैंने कल्पना की कि यह किसी अंतरिक्ष विषय का ग्राफिक चित्रण था। मेरी आंख की मांसपेशियों को आराम मिला और मुझे रंग चिकित्सा का रहस्यमय प्रभाव महसूस हुआ।

थोड़ी देर बाद, मैंने इस तरह से प्रोग्रामेटिक रूप से कुछ फिर से बनाने की कोशिश करने का फैसला किया। चूंकि मेरा गुर्गा पर्ल था, मैंने उसकी ओर रुख किया। मेरे ActiveState पर्ल 5.14.2 में, जीडी मॉड्यूल डिफ़ॉल्ट रूप से स्थापित किया गया था और मैंने फैसला किया कि मैं इसका उपयोग करूंगा।

संचालन का सिद्धांत


सबसे पहले, हमें एक स्क्रिप्ट की आवश्यकता है जो अराजक ओवरले के साथ छवियां बनाएगी:
#!/usr/bin/env perl use strict; use GD; my $res = 16000; my $outres = 1000; my $format = 2.0; for my $z(0..20) { my ($c1, $c2, $c3, $c4); my $img = new GD::Image($res, $res); $img->fill($res, $res => $img->colorAllocate(0, 0, 0)); for (0..1200) { $c1 = $img->colorAllocate(rand(0xFF-0x32)+0x32, rand(0xFF-0x32)+0x32, rand(0xFF-0x32)+0x32); $c2 = $img->colorAllocate(rand(0xFF-0x32)+0x32, rand(0xFF-0x32)+0x32, rand(0xFF-0x32)+0x32); $c3 = $img->colorAllocate(rand(0xFF-0x32)+0x32, rand(0xFF-0x32)+0x32, rand(0xFF-0x32)+0x32); $c4 = $img->colorAllocate(rand(0xFF-0x32)+0x32, rand(0xFF-0x32)+0x32, rand(0xFF-0x32)+0x32); $img->setStyle($c1, $c1, $c2, $c2, $c3, $c3, $c4, $c4, gdTransparent, gdTransparent); (rand(10)>2) ? ($img->line(rand($res), rand($res), rand($res), rand($res), gdStyled)): ((rand(10)>2) ? $img->rectangle(rand($res), rand($res), rand($res), rand($res), gdStyled): $img->ellipse(rand($res), rand($res), rand($res), rand($res), gdStyled)) if (rand(10)>2); } print "processing $z.png...\n"; my $m = new GD::Image($outres*$format, $outres); $m->copyResized($img, 0, 0, 0, 0, $outres*$format, $outres, $res, $res); open F => '>'.$z.'.png'; binmode F; print F $m->png; close F; } 



परिणाम उदाहरण






संदर्भ


जीडी पर्ल मॉड्यूल
विकिपीडिया रंग चिकित्सा

पुनश्च : उदाहरण में चित्र 800x400 निकले, क्योंकि हाबरस्टोरीज ने उन्हें निचोड़ लिया था। इन चित्रों का प्राकृतिक पैमाना 2000x1000 है

Source: https://habr.com/ru/post/In132132/


All Articles