RGB зургийг текст рүү хэрхэн хөрвүүлэх вэ

RGB зургийг текст рүү хэрхэн хөрвүүлэх вэ
RGB зургийг текст рүү хэрхэн хөрвүүлэх вэ

Видео: RGB зургийг текст рүү хэрхэн хөрвүүлэх вэ

Видео: RGB зургийг текст рүү хэрхэн хөрвүүлэх вэ
Видео: WORD файлыг зураг(JPEG) болгох 3 арга 2024, May
Anonim

Bmp зургийн пиксел бүр нь RGB загвараас авсан өнгө (R - улаан, G - ногоон, B - цэнхэр гэсэн гурван бүрэлдэхүүн хэсгээс бүрдэх өнгөний загвар) мэдээллийг агуулдаг. RGB өнгөний утгыг hex форматаар (арван зургаат) хадгалах нь илүү тохиромжтой бөгөөд бүрэлдэхүүн хэсэг бүрийн утга 00… FF хязгаарт багтдаг. 000000 хослол нь хар, FFFFFF - цагаан өнгөтэй тохирч байна.

RGB зургийг текст рүү хэрхэн хөрвүүлэх вэ
RGB зургийг текст рүү хэрхэн хөрвүүлэх вэ

Эхлэхийн тулд Drawing нэрийн талбарыг нээнэ үү.

System. Drawing ашиглах;

Bitmap ангийн шинэ жишээг бий болгоё.

Bitmap bmp = шинэ Bitmap ("c: / 1.bmp") / / c: / 1.bmp - зургийн хаяг

Пикселийн өнгөний утгыг хадгалахын тулд RGB бүрэлдэхүүн хэсгүүд болох тусдаа бүтэц үүсгэж болох боловч би Drawing нэрийн талбараас Color классыг ашиглахаар шийдсэн. Өнгө авахын тулд бид GetPixel (x, y) аргыг ашигладаг бөгөөд x, y нь дүрсний пикселийн координат юм. Хэрэв та Color бүтцийн жишээнээс илүү өнгө хадгалахын тулд өөрийн бүтцийг ашиглахыг хүсвэл bmp. GetPixel (x, y).x аргыг ашиглаж RGB-ийн нэг бүрэлдэхүүн хэсгийг авах боломжтой бөгөөд энд x нь R, G, эсвэл B.

Өнгө [,] өнгө = шинэ Өнгө [bmp. Width, bmp. Height];

for (int y = 0; y <bmp. Hight; y ++)

for (int x = 0; x <bmp. Width; x ++)

{

өнгө [x, y] = bmp. GetPixel (x, y);

}

Өнгөний утгыг файлд бичихийн тулд бид StreamWriter анги ашигладаг. Color жишээний R, G, B элементүүд нь байтын төрөлд багтдаг тул бид тэдгээрийг ToString ("X2") аргыг ашиглан RGB элементүүдийн hex утгыг хадгалах string хэлбэрт хөрвүүлдэг.

StreamWriter steamWriter = шинэ StreamWriter ("c: / 1.txt");

for (int y = 0; y <bmp. Hight; y ++)

{

for (int x = 0; x <bmp. Width; x ++)

{

steamWriter. Write (өнгө [x, y]. R. ToString ("X2"));

steamWriter. Write (өнгө [x, y]. G. ToString ("X2"));

steamWriter. Write (өнгө [x, y]. B. ToString ("X2") + ");

}

steamWriter. WriteLine ();

}

steamWriter. Close ();

Одоо урвуу үйлдлийг хийцгээе - гарч ирсэн текст файлыг дүрс болгон хөрвүүл.

StreamReader-ийн тусламжтайгаар бид файлын мэдээллийг уншдаг.

StreamReader txtFile = шинэ StreamReader ("c: / 1.txt");

Бид зургийн өргөн ба өндрийг тооцдог. Пиксел бүр нь 6 тэмдэгт ба 1 хоосон зай авдаг тул төгсгөлд нь хоосон зай байхгүй тул өргөнийг тооцоолохдоо дараахь томъёог ашиглана уу.

temp = txtFile. ReadLine ();

өргөн = (температур. Урт + 1) / 7;

Зургийн өндөр нь файл дахь мөрийн тоо юм.

while (! txtFile. EndOfStream)

{

txtFile. ReadLine ();

өндөр ++;

}

өндөр ++;

Файл дахь унших заагчийг эхэнд нь шилжүүл:

txtFile. DiscardBufferedData ();

Bitmap ангийн шинэ жишээг үүсгээрэй.

Bitmap bmp2 = шинэ Bitmap (өргөн, өндөр);

Сплит аргыг ашиглан бид матрицын элементүүдийг хуваана. Бид байтын төрлийн гурван хувьсагчийг зарлаж байна - R, G, B. Parse and Substring аргуудыг ашиглан өнгөт элементүүдийг тусад нь сонгоно уу.

Зурган дээрх пикселийг энэ өнгөөр дүүргэхийн тулд SetPixel (j, i, Color. FromArgb (R, G, B)) аргыг ашиглана уу, энд j, i нь зургийн координат, Color. FromArgb (R, G, B) нь бүтцийг бий болгодог арга юм Өнгө.

for (int i = 0; i <height; i + +)

{

temp = txtFile2. ReadLine ();

string substring = temp. Split ('');

for (int j = 0; j <width; j + +)

{

R = байт. Парс (дэд мөр [j]. Дэд мөр (0, 2), System. Globalization. NumberStyles. HexNumber)

G = байт Парс (дэд мөр [j]. Дэд мөр (2, 2), System. Globalization. NumberStyles. HexNumber)

B = байт Парс (дэд мөр [j]. Дэд мөр (4, 2), System. Globalization. NumberStyles. HexNumber)

bmp2. SetPixel (j, i, Color. FromArgb (R, G, B));

}

}

Одоо та зургийг хадгалах боломжтой. Хэрэв та WindowsForm дээр ажиллаж байгаа бол SaveFileDialog анги ашиглаж болно:

SaveFileDialog saveImage = шинэ SaveFileDialog ();

saveImage. Filter = bmp файлууд (*. bmp) | *. bmp | Бүх файлууд (*. *)

| *. * ;

saveImage. ShowDialog ();

bmp2. Save (saveImage. FileName);

Зөвлөмж болгож буй: