Imej kepada Penukaran Seni ASCII menggunakan C
Pendekatan ini menggunakan fon mono-jarak dan boleh mengendalikan imej skala kelabu.
Penukaran Berasaskan Keamatan Piksel/Kawasan (Teduhan)
- Bahagikan imej kepada piksel atau kawasan segi empat tepat (titik).
- Kira purata keamatan skala kelabu untuk setiap titik.
- Gantikan setiap titik dengan watak yang mempunyai keamatan yang paling hampir.
- Gunakan peta aksara untuk mengaitkan watak dengan intensiti.
- Seni ASCII yang terhasil mengekalkan nisbah aspek dan taburan keamatan imej asal.
Pemasangan Aksara (Pendekatan Hibrid)
Kaedah ini cuba memadankan kawasan dalam imej dengan aksara bukan sahaja berdasarkan intensiti tetapi juga pada bentuk.
- Bahagikan imej kepada kawasan segi empat tepat dengan nisbah bidang yang sama seperti fon sasaran.
- Bahagikan setiap aksara dalam fon kepada zon (kiri, kanan, atas , bawah, tengah).
- Kira keamatan untuk setiap zon dalam imej dan fon.
- Cari watak yang paling sepadan dengan keamatan dan bentuk kawasan imej.
- Hasilnya menghasilkan seni ASCII yang lebih menarik secara visual dengan fon yang lebih besar, mengekalkan butiran.
Kod Contoh untuk Pemasangan Aksara
<code class="c++">class intensity {
char c;
int il, ir, iu, id, ic;
void compute(DWORD **p, int xs, int ys, int xx, int yy) {
// Compute intensities for left, right, up, down, and center zones
...
}
};
AnsiString bmp2txt_big(Graphics::TBitmap *bmp, TFont *font) {
// Character sized areas
...
}</code>
Salin selepas log masuk
Perbandingan
-
Penukaran berdasarkan intensiti: Mudah dilaksanakan, pantas, menghasilkan output yang besar dengan pemetaan piksel ke aksara. Sesuai untuk imej yang lebih besar.
-
Pemasangan aksara: Lebih perlahan, lebih kompleks, menghasilkan hasil yang lebih baik walaupun dengan fon yang lebih besar. Mengekalkan bentuk dan butiran untuk wajah dan beberapa imej yang kompleks.
Petua
- Gunakan fon nada tetap (cth., Sistem) dengan set aksara OEM .
- Percubaan dengan peta aksara dan reka letak zon yang berbeza.
- Pertimbangkan keamatan songsang, di mana piksel hitam mempunyai nilai maksimum, untuk pratonton teks yang lebih baik pada latar belakang putih.
Atas ialah kandungan terperinci Bagaimana untuk Menukar Imej kepada Seni ASCII Menggunakan C : Berasaskan Intensiti vs. Pemasangan Karakter?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!