Tugas Anda adalah untuk mengambil gambar 24 BPP sRGB dan mengeluarkan gambar yang sama naik 3x menjadi subpiksel merah, hijau, dan biru. Gambar yang dihasilkan seluruhnya terbuat dari piksel hitam, merah, hijau, dan biru murni.
Setiap piksel dari gambar sumber, ketika diperbesar, menghasilkan pengaturan 9 sub-piksel yang dapat dihidupkan atau dimatikan (yaitu warna atau hitamnya masing-masing). Susunan khusus menggunakan tiga kolom merah, hijau, dan biru, dalam urutan itu, seperti:
(Perhatikan bahwa batas pada "piksel" ini hanya untuk demonstrasi.)
Karena masing-masing dari sembilan subpiksel hanya bisa hidup atau mati, Anda harus menghitung gambar input dan menggunakan pola subpiksel yang berbeda untuk mencapai 3 tingkat kecerahan.
Untuk setiap subpiksel dalam gambar:
- Untuk tingkat warna 0-74, semua subpiksel harus berwarna hitam.
- Untuk level warna 75-134, subpiksel tengah harus berwarna masing-masing dan dua lainnya harus hitam.
- Untuk tingkat warna 135-179, subpiksel tengah harus hitam dan dua lainnya harus masing-masing warna
- Untuk level warna 180-255, ketiga subpiksel harus berwarna masing-masing
Saya memilih rentang level ini karena itulah yang terlihat bagus
Terapkan transformasi ini ke setiap piksel dalam gambar dan hasilkan gambar yang di-subpiksel.
Contoh piksel tunggal
rgb (40, 130, 175) akan menghasilkan pola ini:
rgb (160, 240, 100) akan menghasilkan pola ini:
Contoh Gambar Lengkap
Gambar-gambar bersumber dari Wikipedia
Aturan dan catatan
- Input dan output mungkin dalam format yang sesuai, apakah itu file gambar aktual atau (mungkin bersarang) daftar nilai-nilai RGB.
- Anda dapat menganggap piksel berada dalam ruang warna sRGB dengan 24BPP.
Selamat bermain golf!
sumber
Jawaban:
JavaScript (Node, Chrome, Firefox), 111 byte
Format I / O: matriks
[R,G,B]
nilai.Cobalah online! (hanya satu piksel)
Bagaimana?
Semua nilai ambang adalah kelipatan dari 15. Alih-alih melakukan tes perbandingan eksplisit, itu sedikit lebih pendek untuk menguji bitmask di mana setiap bit mewakili interval 15 nilai (kecuali bit paling signifikan yang dipetakan ke nilai tunggal).
Kita mendapatkan:
000000000111111111
000000111000011111
Berkomentar
Contoh
Cuplikan kode berikut memproses kepala Mona Lisa (64x64). Tidak berfungsi di Edge.
Tampilkan cuplikan kode
sumber
Jelly , 27 byte
[r, g, b]
Cobalah online! Contoh ini mengambil gambar dua kali dua di mana piksel kiri atas adalah contoh pertama piksel, piksel kanan atas adalah contoh kedua piksel, piksel kiri bawah adalah piksel hitam dan piksel kanan bawah adalah putih pixel.
Bagaimana?
sumber
3⁼þ¤
melakukan produk luar[1,2,3]=[1,2,3]
menghasilkan[[1=1,2=1,3=1],[2=1,2=2,2=3],[3=1,3=2,3=3]]
yang[[1,0,0],[0,1,0],[0,0,1]]
.Bahasa Wolfram (Mathematica) , 186 byte
Input dan Output adalah daftar nilai RGB
Cobalah online!
Bahasa Wolfram (Mathematica), 243 byte
kode kedua ini adalah fungsi yang berfungsi sebagai input gambar dan menampilkan gambar
(saya tidak tahu mengapa orang bingung dalam komentar)
Jadi, jika Anda memberi makan gambar ini
ke dalam fungsi ini
Anda akan mendapatkan output ini
sumber
i
ini gambar.C # (Visual C # Interactive Compiler) , 157 byte
Mencetak RGB dari output. Output dipisahkan baris baru dan tidak selaras. Awalnya, saya menggunakan bit-mask dengan
1
on dan0
off, tapi kemudian saya melihat jawaban Arnauld, dan saya menyadari menggunakan0
sebagai aktif dan tidak1
aktif dapat menghemat byte dalam nomor tersebut. TIO Link berisi "gambar" sampel 4 x 2 piksel.Cobalah online!
sumber
APL + WIN, 102 byte
Anjuran untuk matriks 2d piksel sebagai bilangan bulat 24 bit seperti yang akan ditampilkan pada gambar
Cobalah online! Atas perkenan Dyalog Classic
Menghasilkan matriks 2d dari bilangan bulat 24 bit dari gambar yang diubah. Sebagian besar kode menangani format input dan output.
Contoh: Ambil gambar 2 x 2 yang terdiri dari piksel sampel
Memasukkan:
Keluaran:.
sumber
Karat - 281 byte
Baris ini adalah fungsi yang memenuhi tantangan, namun inputnya sebenarnya adalah data dalam format file TGA seperti yang dijelaskan di paulbourke.net , bersama dengan lebar dan tinggi pra-parsing, dalam piksel, dari gambar. Ini mengembalikan data piksel untuk output, sebagai byte, dalam vektor 9 kali ukuran data piksel input.
Baris kedua ini adalah fungsi utama () yang dapat mengubah file input bernama i.tga menjadi file output bernama o.tga, dengan memanggil fungsi z dari baris pertama, tanpa menggunakan perpustakaan eksternal apa pun. Ini menangani penguraian lebar / tinggi, membuat header untuk file output, dan membaca file + menulis. Itu akan menambah 402 byte jika tantangan diperlukan File I / O, dengan total 683. Ini berguna untuk pengujian.
sumber