কিউআর কোড হিসাবে 2015 আউটপুট


15

মিশন সহজ। কিউআর কোড হিসাবে কেবল 2015 নম্বর আউটপুট করুন newyear.pngএবং পিএনজি ফর্ম্যাটে নামকরণ করা ফাইলটিতে এটি লিখুন । কোড অবশ্যই কোনও দিন বৈধ হতে হবে, তাই সম্ভবত আপনি চলতি বছর ব্যবহার করবেন না।

পাঠ্যের মতো কিউআর কোডটি এর মতো দেখাচ্ছে:

# # # # # # #   # # # #     # # # # # # #
#           #           #   #           #
#   # # #   #   # #     #   #   # # #   #
#   # # #   #       #   #   #   # # #   #
#   # # #   #       #   #   #   # # #   #
#           #               #           #
# # # # # # #   #   #   #   # # # # # # #
                #   # #
#   #     # #     # #     # #       #   #
  # # #   #   #   #   # #   #     #   # #
#   # #   # # #   # # # # # #   #       #
# # #         # #         # # # #
# # # # #   #   #     #     #   #     #
                      # # # #
# # # # # # #       #   # #   # #   #   #
#           #   #         # # # #
#   # # #   #         #     #   #     #
#   # # #   #     #     # # # # #
#   # # #   #   #   #   # #   # #   #   #
#           #     # #       # # #   # # #
# # # # # # #   #           #   #   #   #

লিখিত newyear.pngফলাফলটিতে অবশ্যই সাদা 5 পিক্সেল সীমানা এবং একটি পিক্সেল আকারের বিন্দুযুক্ত QR কোড থাকতে হবে। এটিতে কিউআর কোড ব্যতীত অন্য কিছু থাকতে হবে না।


1
এটি হার্ডকোড করা যেতে পারে, বা আপনার কিউআর কোড উত্পন্ন করতে হবে?
আন্ডারগ্রাউন্ডোমোনাইল

7
আরও বেশি উত্তর আসবে যদি এটি চিত্রক আউটপুট নয় আসকি আউটপুট ভিত্তিক based
অপ্টিমাইজার

6
কোডটি কোনও ত্রুটি ছাড়াই ঠিক সঠিক হতে হবে, বা এটি সঠিকভাবে স্ক্যান করার পক্ষে যথেষ্ট? (কিউআর কোডগুলিতে প্রচুর ইচ্ছাকৃত অপ্রয়োজনীয়তা এবং ত্রুটি সংশোধন রয়েছে, সুতরাং আপনি প্রচুর পিক্সেল ফ্লিপ করতে পারেন এবং সেগুলি এখনও কাজ করবে।) এছাড়াও, এটি কি পিএনজি হতে হবে, বা আমরা অন্যান্য চিত্র ফর্ম্যাটগুলি ব্যবহার করতে পারি (আমি ভাবছি বিশেষত এখানে পিবিএম সম্পর্কে )?
ইলমারি করোনেন

উত্তর:


12

কাঁচা ফাইল, 184 বাইট = 173-বাইট ফাইল + 11-বাইট ফাইলের নাম

আমি আশা করি এটি কোনও মানক ফাঁকগুলি ভঙ্গ করবে না। তবে আউটপুটে "একটি উচ্চতর এবং এটি উত্পাদন করার সবচেয়ে সংক্ষিপ্ত উপায় রয়েছে (সম্ভবত) এটি কেবল আক্ষরিকভাবে মুদ্রণ করা হবে ..."।

newyear.png

ফাইলের বেস 64:

iVBORw0KGgoAAAANSUhEUgAAAB8AAAAfAQAAAAA31SuUAAAAdElEQVR4XnXOMQ5BQRRA0euVRFgGCq1ubIyJpSh11I
qJWIjo+fnt/JnJe55WornlycXMVAB+Qp49A7U/J8rqlIQReG5Quz6Rx8eA6VaF5R7a5arooXg2LaKvd8KGRyBPJLoy
D640pxZ3pay/creL5KnEvwcfvE46ggJMibIAAAAASUVORK5CYII=

কোনও প্রোগ্রাম গল্ফ করার পরিবর্তে আমি ফলাফল পিএনজি চিত্র গল্ফ করেছিলাম। কিউআর কোডটি খুব নমনীয় ফর্ম্যাট, এমন অনেকগুলি পরামিতি থাকে যা ফিড করা যায়: ইনপুটটির এনকোডিং, ত্রুটি সংশোধন স্তর এবং মাস্কিং চিত্র। এগুলি সমস্ত পৃথক চিহ্ন তৈরি করে এবং বিভিন্ন আকারের ফাইলগুলিতে সংকুচিত হবে।

সুতরাং আমি এই সমস্ত সংমিশ্রণ তৈরি করার জন্য একটি প্রোগ্রাম লিখেছি (ফলস্বরূপ 20 67২০ ফাইল) এবং তারপরে পিএনজিইউটি ব্যবহার করুন যা সবচেয়ে ছোট ফাইলটিতে সংকুচিত হয়েছে pick এটি এমন একটি ফাইল হিসাবে দেখা যায় যা:

  • প্রথমে আলফানামুরিক মোডে "20" লিখুন
  • তারপরে সংখ্যা মোডে "1" লিখুন
  • তারপরে সংখ্যা মোডে "5" লিখুন
  • "এইচ" (উচ্চ) ত্রুটি সংশোধন স্তরটি ব্যবহার করুন
  • "110" ডেটা মাস্কিং ব্যবহার করুন

test-3-1-H-Diamonds.bmpযদি আপনি নীচের প্রোগ্রামটি ব্যবহার করেন তবে এটিকে বলা হয় । এই চিত্রটি পিএনজিওউটি চালানোর অনেক পরে 175-বাইট। "সংস্করণ 1" কিউআর কোডটিতে "হাই" ত্রুটি সংশোধন স্তরের সাথে, আমরা ডেটাটি ক্ষতিগ্রস্ত না করে ডেটা অংশে 8 পিক্সেল পর্যন্ত পরিবর্তন করতে পারি। কিছুটা ম্যানুয়াল ট্রায়াল-এন্ড-ত্রুটির সাথে আমি এটিকে উপরে উপস্থাপিত 173 বাইটে আরও কমিয়ে আনতে পারি। এটি সম্ভবত ছোট হতে পারে তবে সমস্ত সংমিশ্রণকে ক্লান্তিকর জন্য 208 সি 8 ~ 7.5 × 10 13 চেকগুলি প্রয়োজন যা আমি করতে যাচ্ছি না;)


মরচে (0.13.0-রাত্রে (5ba610265)) প্রোগ্রাম যা সমস্ত সংমিশ্রণ উত্পন্ন করে:

/* 

Also put these into your Cargo.toml: 

[dependencies]
qrcode = "0.0.3"
bmp = "0.0.3"

*/

extern crate qrcode;
extern crate bmp;

use qrcode::bits::Bits;
use qrcode::optimize::Segment;
use qrcode::types::{Version, EcLevel, Mode};
use qrcode::ec::construct_codewords;
use qrcode::canvas::{Canvas, MaskPattern, Module};

use bmp::{Image, Pixel};

use std::num::Int;

const BLACK: Pixel = Pixel { r: 0, g: 0, b: 0};
const WHITE: Pixel = Pixel { r: 255, g: 255, b: 255 };

static SEGMENT_SEPARATIONS: [&'static [(uint, uint)]; 8] = [
    &[(0, 1), (1, 2), (2, 3), (3, 4)],
    &[(0, 1), (1, 2), (2, 4)],
    &[(0, 1), (1, 3), (3, 4)],
    &[(0, 2), (2, 3), (3, 4)],
    &[(0, 1), (1, 4)],
    &[(0, 2), (2, 4)],
    &[(0, 3), (3, 4)],
    &[(0, 4)],
];

const ALL_EC_LEVELS: &'static [EcLevel] = &[EcLevel::L, EcLevel::M, EcLevel::Q, EcLevel::H];
const ALL_MODES: &'static [Mode] = &[Mode::Numeric, Mode::Alphanumeric, Mode::Byte];
const ALL_MASK_PATTERNS: &'static [MaskPattern] = &[
    MaskPattern::Checkerboard,
    MaskPattern::HorizontalLines,
    MaskPattern::VerticalLines,
    MaskPattern::DiagonalLines,
    MaskPattern::LargeCheckerboard,
    MaskPattern::Fields,
    MaskPattern::Diamonds,
    MaskPattern::Meadow,
];

fn run(ec_level: EcLevel, mask_pattern: MaskPattern, segments: &[Segment], filename: &str) {
    let version = Version::Normal(1);
    let mut bits = Bits::new(version);
    if bits.push_segments(b"2015", segments.iter().map(|s| *s)).is_err() {
        return;
    }
    if bits.push_terminator(ec_level).is_err() {
        return;
    }
    let data = bits.into_bytes();
    let (encoded_data, ec_data) = construct_codewords(&*data, version, ec_level).unwrap();
    let mut canvas = Canvas::new(version, ec_level);
    canvas.draw_all_functional_patterns();
    canvas.draw_data(&*encoded_data, &*ec_data);
    canvas.apply_mask(mask_pattern);
    let canvas = canvas;

    let width = version.width();
    let real_image_size = (width + 10) as uint;
    let mut image = Image::new(real_image_size, real_image_size);
    for i in range(0, real_image_size) {
        for j in range(0, real_image_size) {
            image.set_pixel(i, j, WHITE);
        }
    }
    for i in range(0, width) {
        for j in range(0, width) {
            if canvas.get(i, j) == Module::Dark {
                image.set_pixel((i + 5) as uint, real_image_size - (j + 6) as uint, BLACK);
            }
        }
    }
    image.save(filename);
}

fn main() {
    for (z, separations) in SEGMENT_SEPARATIONS.iter().enumerate() {
        let mut segments = separations.iter().map(|&(b, e)| Segment {
            mode: Mode::Numeric, begin: b, end: e
        }).collect::<Vec<_>>();

        let variations_count = ALL_MODES.len().pow(segments.len());
        for i in range(0, variations_count) {
            let mut var = i;
            for r in segments.iter_mut() {
                r.mode = ALL_MODES[var % ALL_MODES.len()];
                var /= ALL_MODES.len();
            }
            for ec_level in ALL_EC_LEVELS.iter() {
                for mask_pattern in ALL_MASK_PATTERNS.iter() {
                    let filename = format!("results/test-{}-{}-{}-{}.bmp", z, i, *ec_level, *mask_pattern);
                    run(*ec_level, *mask_pattern, &*segments, &*filename);
                }
            }
        }
        println!("processed {}/{}", z, 8u);
    }
}

1
প্রধান সমস্যা আমি এখানে দেখতে পান, তাহলে আপনার জমা নিজেই একটি নেই লেখা হয় প্রোগ্রামিং ভাষা
মার্টিন এন্ডার

4
@ মার্টিনবাটনার এটি নির্বাচিত কয়েকটি লোকের একটি বিষয়গত মতামত। বলা হচ্ছে, ফাইলটি যেভাবে প্রাপ্ত হয়েছিল তা প্রোগ্রাম করা হয়েছিল তাই আমি বলি এটি একটি সম্পূর্ণ বৈধ জমা submission এছাড়াও, এটি হ'ল একটি দুর্দান্ত উপায়।
নিট

1
@ নিট এটি ডাউনটা ছাড়াই একটি মেটা পোস্ট, যা মূলত এসইতে সম্প্রদায়ের sensকমত্য (কমপক্ষে পিপিসিজিতে) কীভাবে কাজ করে। আপনি যদি মতানৈক্য করেন তবে আপনি এই উত্তরটি হ্রাস করতে পারেন বা বিকল্প সরবরাহ করতে পারেন। বলা হচ্ছে, আমি সম্ভবত একটি আলাদা মেটা পোস্ট করব, বিশেষত কলমোগোরভ জটিলতার চ্যালেঞ্জগুলি সম্পর্কে, কারণ এটি অনেকটা সামনে আসছে।
মার্টিন এন্ডার

@ নিট ডোন এই বিষয়ে মেটাতে নির্দ্বিধায় আলোচনা করুন।
মার্টিন এন্ডার

জিআইএফ থেকে রূপান্তরকে আরও ছোট বলে মনে হচ্ছে।
jimmy23013

5

গণিত, 217 177 176 166 বাইট

এখানে একটি সূচনা:

"newyear.png"~Export~ImagePad[Image[IntegerDigits[36^^fl6ibg25c8z00uef53p4657dgd6hjzg41e5joead1qgz0l2xchqgso5r1a51v5no4zkw9v22okk‌​lg0cymmy2,2,441]~Partition~21],5,1]

কম গল্ফ:

"newyear.png"~Export~ImagePad[
 Image[
  IntegerDigits[
    36^^fl6ibg25c8z00uef53p4657dgd6hjzg41e5joead1qgz0l2xchqgso5r1a51v5no4zkw9v22okk‌​lg0cymmy2,
    2,
    441
  ]~Partition~21
 ],
 5,
 1
]

কিউআর কোডটি একটি বেস 36 নম্বরটিতে এনকোড করা হয়। অবশ্যই, আমি এটিকে প্রসারিত ASCII (বেস 256) এ এনকোড করতে পারলাম, তবে এটি কেবল 30 বাইট দ্বারা স্ট্রিংটি সংক্ষিপ্ত করবে এবং আমি নিশ্চিত নই যে আমি এর চেয়ে অনেক কম দামে রূপান্তরটি করতে পারি।

অবশ্যই এটি ম্যাথমেটিকা, সুতরাং এখানে 63৩-বাইটও রয়েছে

"newyear.png"~Export~ImagePad[BarcodeImage["2015","QR",21],5,1]

তবে আমি অনুমান করি যে এটি একটি আদর্শ ফাঁক oph ;) (এটি চ্যালেঞ্জের চেয়ে আলাদা কিউআর কোড উত্পন্ন করে, তাই আমি অনুমান করি কিউআর কোডটি অনন্য নয়?)


1
হ্যাঁ কিউআর কোডে একই স্ট্রিংটি এনকোড করার একাধিক উপায় রয়েছে যেমন, বিভিন্ন স্তরের ত্রুটি পরীক্ষা করা, এনকোডিং স্কিম, চিত্র ছাপানো ইত্যাদি etc.
কেনেটিএম

FromDigits? 36^^fl6ibg25c8z00uef53p4657dgd6hjzg41e5joead1qgz0l2xchqgso5r1a51v5no4zkw9v22okklg0cymmy2পরিবর্তে আপনি ব্যবহার করতে পারেন ।
কেনেটিএম

পছন্দ করুন আপনাকে ধন্যবাদ :) আমি এটির সাথেই মনে করি, বেজ 256 সত্যিই এটির পক্ষে মূল্যহীন নয় (আমার তখন ToCharacterCodeএবং উভয়ই দরকার ছিল FromDigits))
মার্টিন ইন্ডার

3

মতলব 545 বাইট

নববর্ষ

শ্রমসাধ্য ম্যানুয়াল কাজের এবং কোনও অভিনব বিল্টিন স্ট্রিং সংক্ষেপণ / কথোপকথন ছাড়াই হার্ডকোড । আমি জানি এটি এখনও অন্য উত্তরগুলির মতো ভাল নয় তবে আমি এখনও খুশি =)

b=[[61:67,69,71:73,75:81,92,98]+100,
    1,3:4,6,12,23,25:27,29,31:35,37,39:41,43,54,56:58,60,63:64,66,68,70:72,74,85,87:89,91,97,99]+200,
    [1:3,5,16,22,24:26,30,36,47:53,55,57,59,61:67,87:89]+300,
    [9,11,15:16,20:21,24,27,29,40,42,48:50,57,59,71,74:75,77:79,81,85,89:90]+400,
    [2,9,11:12,14:15,18,34:37,39,42:43,46:47,50:51,72,74:75,77:79,81:82,95:99]+500,
    [0:1,3:8,10:12,14:15,26,32,37,40:41,43:45,57,59:61,63,67:69,71:77,88,90:92,94,97]+600,
    [19,21:23,25,27,33,37:39,50,56,59,62,66,69,81:87,89:91,95,99:101]+700];
z=zeros(31);z(b)= 1;imwrite(~z,'newyear.png')

আরও অপঠনযোগ্য (প্রকৃত 545 সংস্করণ):

z=zeros(31);
z([
    [61:67, 69, 71:73, 75:81, 92, 98] + 100,
    [1, 3:4, 6, 12, 23, 25:27, 29, 31:35, 37, 39:41, 43, 54, 56:58, 60, 63:64, 66, 68, 70:72, 74, 85, 87:89, 91, 97, 99] + 200,
    [1:3, 5, 16, 22, 24:26, 30, 36, 47:53, 55, 57, 59, 61:67, 87:89] + 300,
    [9, 11, 15:16, 20:21, 24, 27, 29, 40, 42, 48:50, 57, 59, 71, 74:75, 77:79, 81, 85, 89:90] + 400,
    [2, 9, 11:12, 14:15, 18, 34:37, 39, 42:43, 46:47, 50:51, 72, 74:75, 77:79, 81:82, 95:99] + 500,
    [0:1, 3:8, 10:12, 14:15, 26, 32, 37, 40:41, 43:45, 57, 59:61, 63, 67:69, 71:77, 88, 90:92, 94, 97] + 600,
    [19, 21:23, 25,27, 33, 37:39, 50, 56, 59, 62, 66, 69, 81:87, 89:91, 95, 99:101] + 700
])= 1;
imwrite(~z,'newyear.png')

আমরা একটি 31 এক্স 31 শূন্য ম্যাট্রিক্স তৈরি করেন, কিন্তু সূচকের সহ সব ঘর সেট করতে বাহক হিসেবে এটি অ্যাক্সেস bকরতে 1। আমি যে কৌশলগুলি ব্যবহার করেছি তা হ'ল ধারাবাহিক সংখ্যার (যেমন [1,2,3,4] = 1:4) চিহ্নিতকরণ এবং ভেক্টরের প্রতিটি মানকে স্কেলার যুক্ত করে একটিকে 100-অঙ্ক মুছে ফেলা।

দেখা যাক যে কেউ = =) কে মারতে পারে কিনা


সুতরাং আমি শব্দটি পড়িনি unreadable সঠিকভাবে ... অবশ্যই পড়েছি readable। এটি প্রস্তাব দেওয়ার পরে ঠিক তা দেখেছিলেন এবং আশা করছেন যে আমার সম্পাদনাটি যে এটি পড়েছে তারা তা প্রত্যাখ্যান করেছে তবে তারা এটিকে খুব স্পষ্টতই মিস করেছে। খারাপ সম্পাদনার জন্য দুঃখিত ...
ছদ্মনাম

আইএমএইচওর উপর নির্ভর করে না, কেবল প্রথম সংস্করণটি অন্তর্ভুক্ত করতে চেয়েছিল কারণ ব্যাখ্যাতে এটি উল্লেখ করা সহজ।
flawr

2

বাশ, 206 252 257 বাইট

বান্ডিলযুক্ত convertকমান্ডটি ব্যবহার করে imagemagickআরও 46 বাইট সাশ্রয় হয়।

base64 -d<<<UDQKMzAgMzAKAAAAAAAAAAAAAAAAAAAAAAAAAAAH9L+ABBkggAXULoAF2S6ABdOugAQeoIAH+r+AB9zVAABIlwABHU6AAsIaAAFXS4AAD+QAB/ywAAQT5QAF3pIABd6SAAXdTgAEHBsAB/1OAAAAAAAAAAAAAAAAAAAAAAAAAAAA|convert - newyear.png

পরিবর্তিত Base64- এনকোডেড pbmএকটি ছবিতে pngসঙ্গে ইমেজ imagemagickএর convert

decode (-d)আপনার নির্দিষ্ট base64বাইনারিতে আপনাকে প্যারামিটারটি সামঞ্জস্য করতে হতে পারে । আমার উবুন্টু 14.04 এলটিএসে পরীক্ষিত।

<<</ এখানে-স্ট্রিং ব্যবহার করে 5 বাইট সংরক্ষণ করা হয়েছে

base64 -d>newyear.png<<<iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeAQMAAAAB/jzhAAAABlBMVEX///8AAABVwtN+AAAAX0lEQVQI12PACdi/7G9gYJFUaGBgvaIHJG6CiMvrgGJyCxoY2H/tBxJ3rgIVekxnYGCU9WtgYDokBWSFezcwMPA/ARrwZwMDA4vwUwYG1nuTYMRdP6CYjDRQ9q8fbrsBLRkaYOOP83wAAAAASUVORK5CYII=

পুরানো সংস্করণ (257 বাইট):
echo iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeAQMAAAAB/jzhAAAABlBMVEX///8AAABVwtN+AAAAX0lEQVQI12PACdi/7G9gYJFUaGBgvaIHJG6CiMvrgGJyCxoY2H/tBxJ3rgIVekxnYGCU9WtgYDokBWSFezcwMPA/ARrwZwMDA4vwUwYG1nuTYMRdP6CYjDRQ9q8fbrsBLRkaYOOP83wAAAAASUVORK5CYII=|base64 -d > newyear.png

শুধু একটি সহজ শেল কমান্ড শৃঙ্খল যা base64 এনকোড লিখেছেন pngএর stdin মধ্যে ফাইল base64কারণে এটা যে decodes -dপতাকা এবং newyear.png তার stdout- এ লিখেছেন।


চরিত্রগুলি সম্ভবত এর মতো কিছু দিয়ে সংরক্ষণ করতে পারে base64 -d>newyear.png<<<[the long string]তবে আমি কোনও লিনাক্স মেশিন আরএন-তে নেই এবং কোন স্বর্ণের স্থানটি বাধ্যতামূলক তা আমি জানি না
আন্ডারগ্রাউন্ডোমোরাইল

base64 -d>newyear.png<<<[base64 string]উবুন্টু 14.04 এ কাজ করার বিষয়ে নিশ্চিত হয়েছেন ।
পূর্বকুডারী

যদি আপনি প্রস্তাবিত কোডটি ব্যবহার করতে চলেছেন তবে কেবল উত্তর, বাশ, কেএসএ বা জেড জাতীয় কিছুতে শিরোনাম করুন। সাধারণ শেল (যেমন পসিক্সের সাথে সামঞ্জস্যপূর্ণ শ, অ্যাশ বা ড্যাশ) এখানে স্ট্রিং সিনট্যাক্স সমর্থন করে না ।
manatwork

আমরা netpbm রুটিন ব্যবহার করতে পারেন, তাহলে আমরা সংকুচিত বিটম্যাপ ভোজন এবং 40 বাইট হারাতে পারেন: প্রতিধ্বনি UDQKMzEgMzEKAAAAAAAAAAAAAAAAAAAAAAAAAAAH95 / ABBBQQAXWV0AF0VdABdFXQAQQEEAH9V / AAAWAAAUzMUADqtLABbv0QAcMPAAH1JSAAADwAAfxbUAEFDwABdCUgAXSfAAF1W1ABBMdwAf0FUAAAAA AAAAAAAAAAAAAAAAAAAAAAA == | করুন Base64- -d | pnmtopng> newyear.png
swstephe

@ মান্যাটওয়ার্ক স্রেফ সম্পাদিত, বাশকে যেমন আমার অ্যান্ড্রয়েড ফোনে এটি পরীক্ষা করা উচিত তেমন কাজ করা উচিত।
জায়ান্ট্রি ট্রি

1

পাইথন 2 + পিআইএল, 216 215

মূলত গাণিতিক সমাধানের একটি বন্দর।

from PIL import*
b=Image.new("1",[21]*2)
b.putdata(map(int,'0'*7+bin(int('FL6IBG25C8Z00UEF53P4657DGD6HJZG41E5JOEAD1QGZ0L2XCHQGSO5R1A51V5NO4ZKW9V22OKKLG0CYMMY2',36))[2:]))
ImageOps.expand(b,5,255).save("newyear.png")

0

সাধারণ শেল সরঞ্জামসমূহ + ইমেজম্যাগিক, 215

(echo "P1
21 21"
base64 -d<<<H95/ggoN1lduirt0VdggIP9V/ALAFMzFdVpdu/R4YeH1JSAB4H8W1goeF0JSuk+F1W1gmO/9BVA=|xxd -c99 -p|tr a-f A-F|dc -e2o16i?p|tr -d '\n\\'|fold -21)|convert -border 5 -bordercolor white - newyear.png

কিছুটা বিশৃঙ্খলাযুক্ত , তবে অন্যান্য শেল উত্তরের চেয়ে ছোট

  • বেস64 64 বেস থেকে 256 কে রূপান্তর করে (বর্ধিত এএসসিআইআই)
  • xxd হেক্সে রূপান্তরিত করে
  • টিআর হ্যাক্স বড় বড় করে তোলে, ডিসির জন্য উপযুক্ত
  • ডিসি হেক্স পড়ে এবং 1 এবং 0 এর বাইনারি স্ট্রিং মুদ্রণ করে
  • tr মুছে ফেলা wh এবং সাদা স্থান
  • ভাঁজগুলি লাইনগুলিকে 21 টি (21 পিক্সেল) দীর্ঘ করে তোলে
  • বরাবর এই আউটপুট, P1\n21 21হয় PBM হল P1 বিন্যাস
  • রূপান্তর (চিত্রমজিক) এটি 5 পিক্সেলের সীমানার সাথে .png এ রূপান্তর করে:

এখানে চিত্র বর্ণনা লিখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.