የ RGB ምስሎችን ወደ ጽሑፍ እንዴት መለወጥ እንደሚቻል

የ RGB ምስሎችን ወደ ጽሑፍ እንዴት መለወጥ እንደሚቻል
የ RGB ምስሎችን ወደ ጽሑፍ እንዴት መለወጥ እንደሚቻል

ቪዲዮ: የ RGB ምስሎችን ወደ ጽሑፍ እንዴት መለወጥ እንደሚቻል

ቪዲዮ: የ RGB ምስሎችን ወደ ጽሑፍ እንዴት መለወጥ እንደሚቻል
ቪዲዮ: ጊዜያችሁን በአግባቡ በመጠቀም ሕይወታችሁን መለወጥ የምትችሉባቸው መንገዶች 2024, ታህሳስ
Anonim

እያንዳንዱ የቢፒኤም ምስል ከ RGB ሞዴል (ስለ ሶስት ቀለሞች አር - ቀይ ፣ ጂ - አረንጓዴ ፣ ቢ - ሰማያዊ) ስላለው ቀለሙ መረጃውን ይይዛል ፡፡ የእያንዳንዱ አካል እሴት በ 00… FF ክልል ውስጥ ባለበት የ ‹Xx› ቅርጸት (ሄክሳዴሲማል) ውስጥ የ RGB ቀለም ዋጋን ለማከማቸት የበለጠ አመቺ ነው ፡፡ ጥምረት 000000 ከጥቁር ፣ FFFFFF - ወደ ነጭ ጋር ይዛመዳል።

የ RGB ምስሎችን ወደ ጽሑፍ እንዴት መለወጥ እንደሚቻል
የ RGB ምስሎችን ወደ ጽሑፍ እንዴት መለወጥ እንደሚቻል

ለመጀመር ፣ የስዕል ሥም ቦታውን እንክፈት-

ሲስተም በመጠቀም

የ Bitmap ክፍልን አዲስ ምሳሌ እንፍጠር-

Bitmap bmp = አዲስ Bitmap ("c: / 1.bmp") / / c: / 1.bmp - የምስል አድራሻ

የፒክሴል ቀለም ዋጋን ለማከማቸት የተለየ መስሪያዎችን መፍጠር ይችላሉ ፣ የእሱ መስኮች የ RGB አካላት ናቸው ፣ ግን የቀለም ክፍልን ከ ‹Drawing› የስፔስ ቦታ ለመጠቀም ወሰንኩ ፡፡ ቀለሙን ለማግኘት GetPixel (x, y) ዘዴን እንጠቀማለን ፣ x ፣ y የምስል ፒክሰል መጋጠሚያዎች ባሉበት። ከቀለማት ክፍል ምሳሌ ይልቅ ቀለሙን ለማከማቸት የራስዎን መዋቅር ለመጠቀም ከፈለጉ ፣ “x” አር ፣ ባለ ‹RGB› አንድ ነጠላ የ ‹RGB› አካል ለማግኘት የ bmp. GetPixel (x, y).x ዘዴን መጠቀም ይችላሉ ፡፡ ጂ ፣ ወይም ቢ

ቀለም [,] ቀለም = አዲስ ቀለም [bmp. Width, bmp. ቁመት];

ለ (int y = 0; y <bmp. Height; y ++)

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

{

ቀለም [x, y] = bmp. GetPixel (x, y);

}

የቀለም እሴቶችን ወደ ፋይል ለመጻፍ የ StreamWriter ክፍልን እንጠቀማለን። የቀለም ምሳሌው አር ፣ ጂ ፣ ቢ አካላት ባይት ዓይነት በመሆናቸው የ “ቶስትሪንግ” (“X2”) ዘዴን በመጠቀም የ ‹አርጂጂ› አባላትን የሄክስ እሴቶችን ወደሚያስቀምጥ ወደ ሕብረቁምፊ ዓይነት እንለውጣቸዋለን ፡፡

StreamWriter steamWriter = አዲስ StreamWriter ("c: / 1.txt");

ለ (int y = 0; y <bmp. Height; y ++)

{

ለ (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 ክፍተቶችን ስለሚወስድ እና በመጨረሻ ምንም ክፍተት ስለሌለ ስፋቱን ለማስላት የሚከተሉትን ቀመር እንጠቀማለን ፡፡

ቴምፕ = txtFile. ReadLine ();

ስፋት = (ቴምፕሬስ ርዝመት + 1) / 7;

የምስል ቁመት በፋይሉ ውስጥ ያሉት የመስመሮች ብዛት ነው

(! txtFile. EndOfStream)

{

txtFile. ReadLine ();

ቁመት ++;

}

ቁመት ++;

በፋይሉ ውስጥ የተነበበውን ጠቋሚ ወደ መጀመሪያው ያንቀሳቅሱት-

txtFile. DiscardBufferedData ();

የ Bitmap ክፍልን አዲስ ምሳሌ ይፍጠሩ-

Bitmap bmp2 = አዲስ Bitmap (ስፋት ፣ ቁመት);

የተከፈለውን ዘዴ በመጠቀም የማትሪክስ ክፍሎችን እንከፍላለን ፡፡ የባይተሩን ዓይነት ሦስት ተለዋዋጮችን እናውጃለን - አር ፣ ጂ ፣ ቢ የፓርሲ እና ንዑስ-መርጫ ዘዴዎችን በመጠቀም የቀለሙን አካላት በተናጠል ይምረጡ ፡፡

በዚህ ቀለም ውስጥ ያለውን ፒክስል ለመሙላት የ SetPixel (j, i, Color. FromArgb (R, G, B)) ዘዴን ይጠቀሙ ፣ የት እኔ ፣ የምስል መጋጠሚያዎች ፣ ቀለም ፡፡) አወቃቀሩን የሚፈጥር ዘዴ ነው ቀለም።

ለ (int i = 0; i <ቁመት; i + +)

{

ቴምፕ = txtFile2. ReadLine ();

ሕብረቁምፊ substring = temp. Split ( );

ለ (int j = 0; j <ስፋት; j + +)

{

R = byte. Parse (ንጣፍ [j]። ንዑስ ገመድ (0, 2) ፣

ሲስተም. ግሎባላይዜሽን ቁጥር-ሴልስስ.

G = byte. Parse (ንጣፍ [j]። ንጥል ገመድ (2, 2) ፣

ሲስተም. ግሎባላይዜሽን ቁጥር-ሴልስስ.

B = byte. Parse (ንጣፍ [j]። ንጣፍ (4, 2) ፣

ሲስተም. ግሎባላይዜሽን ቁጥር-ሴልስስ.

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

}

}

አሁን ምስሎቹን ማስቀመጥ ይችላሉ ፡፡ በዊንዶውስ ፎርም ውስጥ የሚሰሩ ከሆነ የ “SaveFileDialog” ክፍልን መጠቀም ይችላሉ-

SaveFileDialog saveImage = አዲስ SaveFileDialog ();

saveImage. Filter = bmp files (*. bmp) | *. bmp | ሁሉም ፋይሎች (*. *)

| *. * ;

saveImage. ShowDialog ();

bmp2. Save (saveImage. FileName);

የሚመከር: