[ಸಂಗೀತ] ZAMYLA ಚಾನ್: ಇದು ಮಿಸ್ ಸ್ಕಾರ್ಲೆಟ್ ಆಗಿತ್ತು ಕ್ಯಾಂಡಲ್ ಜೊತೆ. ವೊಡುನಿಟ್? ಹಾಗೆಯೇ, ನಾವು ಕಂಡುಹಿಡಿಯಲು ನೀನು. ಬೋರ್ಡ್ ಆಟ ಸುಳಿವಿನ, ನೀವು ಬಹುಶಃ ಒಂದು ಭೌತಿಕ ಕೆಂಪು ಚಿತ್ರವನ್ನು ನೀಡಲಾಗುವುದು. ಮತ್ತು ಚಿತ್ರದ ತುಂಬಾ ಕೆಂಪು ಮತ್ತು ಕಲೆಯುಳ್ಳ, ಮತ್ತು ನಿಮ್ಮ ಕೆಲಸ ಮಾಡುವುದು ಗುಪ್ತ ಸಂದೇಶ ಬಹಿರಂಗ. ಮತ್ತು ಸಾಮಾನ್ಯವಾಗಿ ನೀವು ಒಂದು ಕೆಂಪು ಒದಗಿಸಲಾಗುತ್ತದೆ ಮಾಡುತ್ತಿದ್ದೇವೆ ಭೂತಗನ್ನಡಿಯಿಂದ, ಅಥವಾ ಒಂದು ಕೆಂಪು ಪರದೆಯ ಎಂದು ಗುಪ್ತ ಸಂದೇಶ ಬಹಿರಂಗ. ಅಲ್ಲದೆ, ನಾವು ಅನುಕರಿಸಲು ನೀನು. ವೊಡುನಿಟ್ ರಲ್ಲಿ, ನೀವು ಒಂದು ಬಿಟ್ಮ್ಯಾಪ್ ಚಿತ್ರ ನೀಡಿದ ನೀವು ಎಂದು, ಬಹಳ ಕಲೆಯುಳ್ಳ ಮತ್ತು ಕೆಂಪು ಕಾಣುತ್ತದೆ ತದನಂತರ ವೊಡುನಿಟ್ ಪ್ರೋಗ್ರಾಂ ಒಂದು ಗುಪ್ತ ಸಂದೇಶ ಬಹಿರಂಗಪಡಿಸಲು. ಆದ್ದರಿಂದ ಹಂತಗಳನ್ನು ಈ ಮುರಿಯಲು ಅವಕಾಶ. ಮೊದಲ, ನೀವು ಕಡತವನ್ನು ತೆರೆಯಲು ಬಯಸುವ - ನೀವು ನೀಡಲಾಗಿದೆ ಎಂಬುದನ್ನು ಸುಳಿವು. ತದನಂತರ ಒಂದು ರಚಿಸಲು ತೀರ್ಪು ಬಿಟ್ಮ್ಯಾಪ್ ಕಡತ. ನಂತರ ನೀವು ಬಿಟ್ಮ್ಯಾಪ್ ನವೀಕರಿಸಲು ಬಯಸುತ್ತೀರಾ ತೀರ್ಪು outfile ಫಾರ್ ಮಾಹಿತಿಯನ್ನು ಹೆಡರ್. ನಂತರ ಮೇಲೆ ಹೆಚ್ಚು. ತದನಂತರ ನೀವು ಒಳಗೆ ಓದಲು ನೀನು ಸುಳಿವು, scanline, ಪಿಕ್ಸೆಲ್ ಮೂಲಕ ಪಿಕ್ಸೆಲ್, ಮಾಹಿತಿ ಪಿಕ್ಸೆಲ್ ಬಣ್ಣಗಳನ್ನು ಬದಲಾಯಿಸುವ ಅಗತ್ಯ, ಮತ್ತು ಬರವಣಿಗೆ ತೀರ್ಪು ಆ - ಆಗಿ ಪಿಕ್ಸೆಲ್ ಮೂಲಕ ಪಿಕ್ಸೆಲ್ ತೀರ್ಪು scanline. ಹೇಗೆ ನಾವು ಈ ಬಗ್ಗೆ ಹೋಗುವ ಆರಂಭಿಸಲು ಇಲ್ಲ? ಅಲ್ಲದೆ, ಅದೃಷ್ಟವಶಾತ್, ನಾವು copy.c ಹೊಂದಿವೆ ಹಂಚಿಕೆ ಕೋಡ್. ಮತ್ತು ಈ ಸಾಬೀತುಪಡಿಸಲು ನಾನು ನಮಗೆ ಸಾಕಷ್ಟು ಉಪಯುಕ್ತ. Copy.c, ಒಂದು ಕಡತ ತೆರೆಯುತ್ತದೆ ಓದುತ್ತದೆ ನಂತರ, infile ಹೆಡರ್, ಮತ್ತು ನವೀಕರಣಗಳನ್ನು outfile ಹೆಡರ್. ನಂತರ ಇದು ಪ್ರತಿ ಪಿಕ್ಸೆಲ್ ಓದುತ್ತದೆ ನಂತರ scanline, ಪಿಕ್ಸೆಲ್ ಮೂಲಕ ಪಿಕ್ಸೆಲ್, ಮತ್ತು outfile ಆಗಿ ಪಿಕ್ಸೆಲ್ ಬರೆಯುತ್ತಾರೆ. ಆದ್ದರಿಂದ, ನಿಮ್ಮ ಮೊದಲ ಹಂತದ might ಕೆಳಗಿನ ಓಟವನ್ನು ಟರ್ಮಿನಲ್ ಆಜ್ಞೆಯನ್ನು - CP copy.c whodunit.c. ಈ ಪ್ರತಿಯನ್ನು ರಚಿಸುತ್ತದೆ copy.c whodunit.c ಹೆಸರಿನ. ಆದ್ದರಿಂದ ತೆರೆಯಲು ನಮ್ಮ ಮೊದಲ ಹಂತದ ಕಡತ, ಚೆನ್ನಾಗಿ, ನಿಖರ ಇಲ್ಲ copy.c. ಆ ಪ್ರತಿಕೃತಿ ಹಾಗಾಗಿ ನೋಡಲು ನೀವು ಬಿಟ್ಟು ಮಾಡುತ್ತೇವೆ. ನಾವು ಈ pset ಜೊತೆ ಇದೆ ಮಾತಾಡುತ್ತಿದ್ದೀರಿ ಏನು ಕಡತ I / O, ಮೂಲತಃ ಕಡತಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳುವ, , ಓದಲು, ಬರೆಯಲು, ಸಂಪಾದನೆ. ನೀವು ಮೊದಲ ಒಂದು ಕಡತವನ್ನು ತೆರೆಯಲು ಇಲ್ಲ? ಅಲ್ಲದೆ, ನೀವು ಒಂದು ಕಡತ ಘೋಷಿಸಲು ನೀನು ಪಾಯಿಂಟರ್, ಮತ್ತು ನಂತರ ನೀವು ಕರೆ ಕಾರ್ಯ fopen. ಮಾರ್ಗ, ಅಥವಾ ಆ ಹೆಸರಿನಲ್ಲಿ ಪಾಸ್ ಫೈಲ್, ಮತ್ತು ನಂತರ ನೀವು ಬಯಸುವ ಕ್ರಮದಲ್ಲಿ ಸೈನ್ ಕಡತವನ್ನು ತೆರೆಯಲು ಆರ್ ಸಾಗುವ ತೆರೆಯುತ್ತದೆ ಓದುವ foo.bmp. ಆದರೆ ಒಂದು W ಸಾಗುವ ಜೊತೆ fopen ತಿನ್ನುವೆ ತೆರೆದ bar.bmp, ಕಡತ ಬರೆಯಲು ಮತ್ತು ವಾಸ್ತವವಾಗಿ ಅದನ್ನು ಸಂಪಾದನೆ. ಈಗ ನಾವು ಫೈಲ್ ತೆರೆಯಿತು ನೀವು, ನಮ್ಮ ಮುಂದಿನ ಹಂತದ ಹೆಡರ್ ಮಾಹಿತಿಯನ್ನು ನವೀಕರಿಸಲು ಆಗಿದೆ outfile ಫಾರ್. ಒಂದು ಹೆಡರ್ ಮಾಹಿತಿಯನ್ನು ಯಾವುದು? ಸರಿ, ಮೊದಲ ನಾವು ತಿಳಿದುಕೊಳ್ಳಬೇಕು ಏನು ಒಂದು ಬಿಟ್ಮ್ಯಾಪ್. ಒಂದು ಬಿಟ್ಮ್ಯಾಪ್ ಕೇವಲ ಒಂದು ಸರಳ ಬೈಟ್ಗಳು ವ್ಯವಸ್ಥೆ. ಮತ್ತು ಅವರು ಈ ಫೈಲ್ ಘೋಷಿಸಲಾಗಿದೆ ಮಾಡುತ್ತಿದ್ದೇವೆ ಒಂದು ಗುಂಪನ್ನು ಇಲ್ಲಿ, bmp.h, ಏನು ಒಂದು ಬಿಟ್ಮ್ಯಾಪ್ ಆಫ್ ಮಾಹಿತಿ ವಾಸ್ತವವಾಗಿ ಔಟ್ ಮಾಡಲಾಗುತ್ತದೆ. ಆದರೆ ನಾವು ನಿಜವಾಗಿಯೂ ಕಾಳಜಿ ಆಗಿದೆ ಬಿಟ್ಮ್ಯಾಪ್ ಕಡತ ಹೆಡರ್, ಇಲ್ಲಿಯೇ, ಮತ್ತು ಇಲ್ಲಿ ಬಿಟ್ಮ್ಯಾಪ್ ಮಾಹಿತಿಯನ್ನು ಹೆಡರ್,. ಹೆಡರ್ ಒಂದೆರಡು ಕೂಡಿದೆ ಬಹಳ ಉಪಯುಕ್ತ ಸಾಬೀತು ಎಂದು ಚರಾಂಕಗಳ. ಇದು biSizeImage ಇಲ್ಲ ಬೈಟ್ಗಳು ಚಿತ್ರದ ಒಟ್ಟು ಗಾತ್ರ. ಮತ್ತು ಈ ಪಿಕ್ಸೆಲ್ಗಳು ಮತ್ತು ಪ್ಯಾಡಿಂಗ್ ಒಳಗೊಂಡಿದೆ. ಪ್ಯಾಡಿಂಗ್ ಬಹಳ ಮುಖ್ಯ, ಆದರೆ ನಾವು ನಂತರ ಆ ಪಡೆಯುತ್ತೀರಿ. BiWidth ಅಗಲ ಪ್ರತಿನಿಧಿಸುತ್ತದೆ ಪಿಕ್ಸೆಲ್ಗಳು ಮೈನಸ್ ಪ್ಯಾಡಿಂಗ್ ಚಿತ್ರ. BiHeight ನಂತರ ಎತ್ತರ ಪಿಕ್ಸೆಲ್ಗಳಲ್ಲಿ ಚಿತ್ರದ. ತದನಂತರ BITMAPFILEHEADER ಮತ್ತು ನಾನು ಹೇಳಿದಂತೆ BITMAPINFOHEADER, ಹಿಂದಿನ, ಆ ಪ್ರತಿನಿಧಿಸುತ್ತದೆ ಸ್ಟ್ರಕ್ಟ್ಸ್ಳ ಎಂದು. ಆದ್ದರಿಂದ, ನೀವು ಕಡತ ಹೆಡರ್ ಪ್ರವೇಶಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ ಸ್ವತಃ, ಆದರೆ ನೀವು ಪಡೆಯಲು ಬಯಸುವಿರಿ ಒಳಗೆ ಆ ಅಸ್ಥಿರ. ಸರಿ. ಆದ್ದರಿಂದ ಹೇಗೆ ನಾವು ಹೆಡರ್ ಮಾಹಿತಿಯನ್ನು ಅಪ್ಡೇಟ್ ಇಲ್ಲ? ಸರಿ, ಮೊದಲ ನಾವು ನೋಡಲು ಹೊಂದಿವೆ ನಾವು ಎಂಬುದನ್ನು ಯಾವುದೇ ಮಾಹಿತಿಯನ್ನು ಬದಲಾಯಿಸಲು ಅಗತ್ಯವಿದೆ ಗೆ, infile, ಸುಳಿವು, outfile, ತೀರ್ಪು. ಏನು ಈ ಸಂದರ್ಭದಲ್ಲಿ ಬದಲಾಗುತ್ತಿರುವ? ಅಲ್ಲದೆ, ವಾಸ್ತವವಾಗಿ, ನಾವು ನೀನು ಏಕೆಂದರೆ ಕೇವಲ ಬಣ್ಣಗಳ ಬದಲಾಗುತ್ತಿರುವ. ನಾವು ಕಡತ ಬದಲಾವಣೆ ಹೋಗುತ್ತಿಲ್ಲ ಗಾತ್ರ, ಚಿತ್ರದ ಗಾತ್ರ, ಅಗಲ, ಅಥವಾ ಎತ್ತರ. ಆದ್ದರಿಂದ ನೀವು ಈಗ ಎಲ್ಲಾ ಸರಿ ಕೇವಲ ಪ್ರತಿ ಪಿಕ್ಸೆಲ್ ನಕಲು. ಸರಿ. ಈಗ ಹೇಗೆ ನಾವು ವಾಸ್ತವವಾಗಿ ನೋಡೋಣ ಕಡತದಿಂದ ಪ್ರತಿ ಪಿಕ್ಸೆಲ್ ಓದಬಹುದು. ಇನ್ನೊಂದು ಫೈಲ್ ನಾನು / ಒ ಕಾರ್ಯ ಕಾರ್ಯರೂಪಕ್ಕೆ ಬರುತ್ತವೆ - fread. ಇದು struct ಒಂದು ಪಾಯಿಂಟರ್ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಬೈಟ್ಗಳು ಹೊಂದಿರುವ ಆ ನೀವು ಓದುವ ಬಳಸುತ್ತಿದ್ದರೆ. ಆದ್ದರಿಂದ ನೀವು ಒಳಗೆ ಓದುವ ಬಳಸುತ್ತಿದ್ದರೆ. ತದನಂತರ ನೀವು ಇದು, ಒಂದು ಗಾತ್ರ ರವಾನಿಸಲು ಪ್ರತಿ ಅಂಶ ಗಾತ್ರವನ್ನು ನೀವು ಓದಲು ಬಯಸುವ. ಇಲ್ಲಿ, ಕಾರ್ಯ sizeof HANDY ಬರುತ್ತವೆ. ನಂತರ ನೀವು, ಹಲವು ಪಾಸ್ ಇದು ಅಂಶಗಳನ್ನು ಸಂಖ್ಯೆಯನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ ಓದಲು ಗಾತ್ರ. ತದನಂತರ ಅಂತಿಮವಾಗಿ, inptr, ಇದು ನೀವು ನೀವು ಫೈಲ್ನಲ್ಲಿ ಪಾಯಿಂಟರ್ ನಿಂದ ಓದಲು ವಿಶೇಷವೇನು. ಆದ್ದರಿಂದ ಆ ಅಂಶಗಳನ್ನು ಎಲ್ಲಾ ಒಳಗೆ inptr ಮತ್ತು ಅವರು ಡೇಟಾ ನೀನು. ನ ಸ್ವಲ್ಪ ಉದಾಹರಣೆಯನ್ನು ನೋಡೋಣ. ನಾನು ದಶಮಾಂಶ ಎರಡು ನಾಯಿಗಳು ಒಳಗೆ ಓದಲು ಬಯಸಿದರೆ, ಅಲ್ಲದೆ, ನಾನು ಎರಡು ವಿಧಾನಗಳಲ್ಲಿ ಒಂದು ಮಾಡಬಹುದು. ನಾನು ಎರಡೂ ಗಾತ್ರದ ಎರಡು ವಸ್ತುಗಳು ಓದಬಹುದು ನನ್ನ inptr ರಿಂದ ನಾಯಿ, ಅಥವಾ ನಾನು ಓದಬಹುದು ಒಂದು ಎರಡು ನಾಯಿಗಳು ಗಾತ್ರವನ್ನು ವಸ್ತು. ಆದ್ದರಿಂದ ನೀವು ನೋಡಿ ಆ ರೀತಿಯಲ್ಲಿ ಅವಲಂಬಿಸಿ ನೀವು, ನೀವು ಗಾತ್ರ ಮತ್ತು ಸಂಖ್ಯೆ ವ್ಯವಸ್ಥೆ ಬೈಟ್ಗಳು ಒಂದೇ ಸಂಖ್ಯೆಯ ಓದಬಹುದು. ಈಗ, ನ ಬದಲಾಯಿಸಲು ಅವಕಾಶ ನಾವು ಅಗತ್ಯವಿದೆ ಪಿಕ್ಸೆಲ್ ಬಣ್ಣ. ನೀವು ಮತ್ತೆ bmp.h ನೋಡಿದರೆ, ನಂತರ ನೀವು ಕೆಳಗೆ ನೋಡುತ್ತಾರೆ RGBTRIPLEs, ಮತ್ತೊಂದು struct ಅಲ್ಲಿ ಅವರು ಮೂರು ಬೈಟ್ಗಳು ಒಳಗೊಂಡಿರುವುದರಿಂದ. ಒಂದು,, rgbtBlue, rgbtGreen, ಮತ್ತು rgbtRed. ಆದ್ದರಿಂದ ಈ ಪ್ರತಿಯೊಂದು ಪ್ರಮಾಣವನ್ನು ಸೂಚಿಸುತ್ತದೆ ನೀಲಿ, ಹಸಿರು ಪ್ರಮಾಣವನ್ನು ಮತ್ತು ಈ ಪಿಕ್ಸೆಲ್ ಒಳಗೆ ಕೆಂಪು, ಪ್ರಮಾಣವನ್ನು ಅಲ್ಲಿ ಪ್ರತಿ ಪ್ರಮಾಣದ ಪ್ರತಿನಿಧಿಸುತ್ತದೆ ಹೆಕ್ಸಾಡೆಸಿಮಲ್ ಸಂಖ್ಯೆ. ಆದ್ದರಿಂದ ff0000 ನೀಲಿ ಬಣ್ಣವನ್ನು ಇರುತ್ತದೆ, ಇದು ನೀಲಿ ಹೋಗುತ್ತದೆ, ಏಕೆಂದರೆ ಕೆಂಪು, ಹಸಿರು. ತದನಂತರ ಎಲ್ಲಾ ಎಫ್ ಬಿಳಿ ಕಾಣಿಸುತ್ತದೆ. ನ smiley.bmp ಒಂದು ನೋಟ, ನೋಡೋಣ ಇದು ನಿಮ್ಮ ವಿತರಣೆ ಕೋಡ್ ಹೊಂದಿವೆ. ನೀವು ಕೇವಲ ಒಂದು ಚಿತ್ರದಲ್ಲಿ ಅದನ್ನು ತೆರೆಯಲು ವೇಳೆ ನೋಡುವವನು ನೀವು ಮಾಡುತ್ತೇವೆ ಕೇವಲ ಕೆಂಪು ನಗು ನೋಡಿ. ಆದರೆ ನಾವು ಮಾಡುತ್ತೇವೆ, ಒಂದು ಆಳವಾದ ಡೈವ್ ತೆಗೆದುಕೊಳ್ಳುವ ನೋಡಿ ರಚನೆ ಅದು ಕೇವಲ ಪಿಕ್ಸೆಲ್ಗಳು. ನಾವು ಬಿಳಿ ಪಿಕ್ಸೆಲ್ಗಳು ಹೊಂದಿವೆ, ತದನಂತರ ಕೆಂಪು ಪಿಕ್ಸೆಲ್ಗಳು. ಎಲ್ಲಾ ನಂತರ, ಬಿಳಿ ffffff, ಮತ್ತು ನಾನು ಬಣ್ಣದ ಬಂದಿದೆ ಕೆಂಪು ಪಿಕ್ಸೆಲ್ಗಳು ಇಲ್ಲಿ, ಮತ್ತು ನೀವು ಅವರು 0000ff ಎಂಬುದನ್ನು ನೋಡಿ. ಝೀರೋ ನೀಲಿ, ಶೂನ್ಯ ಹಸಿರು, ಮತ್ತು ಪೂರ್ಣ ಕೆಂಪು. ಮತ್ತು ನಗು ಎಂಟು ಪಿಕ್ಸೆಲ್ ಅಗಲ ರಿಂದ, ನಾವು ಯಾವುದೇ ಪ್ಯಾಡಿಂಗ್ ಇಲ್ಲ. ಸರಿ. ನಾನು ವಿಭಿನ್ನ ಮೌಲ್ಯಗಳನ್ನು ನಿಯೋಜಿಸಲು ಆದ್ದರಿಂದ ವೇಳೆ ಒಂದು RGBTRIPLE ಮತ್ತು ನಾನು ಬಯಸಿದರು ಇದು ಹಸಿರು ಮಾಡಿ, ನಂತರ ಏನು ನಾನು ಎಂದು ಹೊಂದಿದೆ ನಾನು ಎಂಬ RGBTRIPLE ಘೋಷಿಸಲು ಟ್ರಿಪಲ್, ಮತ್ತು ನಂತರ ಪ್ರತಿ ಪ್ರವೇಶಿಸಲು ಎಂಬುದನ್ನು struct ನಾನು ಒಳಗೆ ಬೈಟ್ ಡಾಟ್ ಆಯೋಜಕರು ಬಳಸಲು ಎಂದು. ಆದ್ದರಿಂದ triple.rgbtBlue, ನಾನು 0 ಆ ನಿಯೋಜಿಸಲು. ಗ್ರೀನ್ ನಾನು ಪೂರ್ಣ ಅದನ್ನು ನಿಯೋಜಿಸಲು - ಯಾವುದೇ ಸಂಖ್ಯೆ, ನಿಜವಾಗಿಯೂ, 0 ಮತ್ತು ff ನಡುವೆ. ತದನಂತರ ಕೆಂಪು, ನಾನು 0 ಹೇಳಲು ಪಡೆಯಲಿದ್ದೇನೆ. ಆದ್ದರಿಂದ ನನಗೆ ಒಂದು ಹಸಿರು ಪಿಕ್ಸೆಲ್ ನೀಡುತ್ತದೆ. ಮುಂದೆ, ನಾನು ಪರಿಶೀಲಿಸಿ ಬಯಸಿದರೆ ಏನು ಏನೋ ಮೌಲ್ಯವನ್ನು? ನಾನು ಪರಿಶೀಲಿಸುತ್ತದೆ ವಿಷಯ ತೋರಿಸಬಹುದಿತ್ತು ಟ್ರಿಪಲ್ ನ, rgbtBlue ಮೌಲ್ಯ ಎಂದು FF ಮತ್ತು ನಂತರ ಮುದ್ರಣ, "ನಾನು ನನ್ನದಾಗಿದೆ ನೀಲಿ! ", ಪರಿಣಾಮವಾಗಿ. ಈಗ, ಅವಶ್ಯವಾಗಿ ಪಿಕ್ಸೆಲ್ ಬಲ, ನೀಲಿ ಎಂದು? ಪಿಕ್ಸೆಲ್ ನ ಹಸಿರು ಮತ್ತು ಕೆಂಪು ಮೌಲ್ಯಗಳನ್ನು ಕಾರಣ ಸಹ ಅಲ್ಲದ 0 ಮೌಲ್ಯಗಳನ್ನು ತೋರಿಸಬಹುದಿತ್ತು. ಈ ಎಲ್ಲಾ ಅಂದರೆ, ಮತ್ತು ಎಲ್ಲಾ ಈ ಪರಿಶೀಲಿಸುವ ಇದೆ ಪೂರ್ಣ ನೀಲಿ ಬಣ್ಣ. ಆದರೆ ಎಲ್ಲಾ ಪಿಕ್ಸೆಲ್ಗಳು ಭಾಗಶಃ ತೋರಿಸಬಹುದಿತ್ತು ಈ ರೀತಿಯ ಬಣ್ಣದ ಮೌಲ್ಯಗಳನ್ನು, ಇಲ್ಲಿ ಮುಂದಿನ ಉದಾಹರಣೆಗೆ. ಇದು ಸ್ವಲ್ಪ ಕಷ್ಟ ನೋಡಿ ಇಲ್ಲಿದೆ ಈ ಚಿತ್ರ ಈಗ. ಈ ಸ್ವಲ್ಪ ತೋರುತ್ತಿದೆ ನೀವು ನೀಡಲಾಗುವುದು ಮಾಡುತ್ತೇವೆ ಎಂದು clue.bmp. ಈಗ, ದೈಹಿಕವಾಗಿ, ನೀವು ಈ ಪರಿಹರಿಸಲು ಇರಬಹುದು, ಮೂಲಕ, ಕೆಂಪು ಬಹಳಷ್ಟು ಇರುವುದರಿಂದ ಚಿತ್ರ ಕೆಂಪು ಪರದೆಯ ಹಿಡಿದುಕೊಂಡು ಆದ್ದರಿಂದ ಇತರ ಬಣ್ಣಗಳನ್ನು ಕಾಣಿಸಿಕೊಳ್ಳಬಹುದು. ಆದ್ದರಿಂದ ಹೇಗೆ ನಾವು ಸಿ ಈ ಅನುಕರಿಸುವ ಇಲ್ಲ? ಹಾಗೆಯೇ, ನಾವು ಎಲ್ಲಾ ಕೆಂಪು ತೆಗೆದು ಇರಬಹುದು ಚಿತ್ರ ಸಂಪೂರ್ಣವಾಗಿ. ಆದ್ದರಿಂದ ನಾವು ಪ್ರತಿ ಸೆಟ್ ಬಯಸುವ ಮಾಡಲು 0 ಪಿಕ್ಸೆಲ್ ಕೆಂಪು ಮೌಲ್ಯ. ಆದ್ದರಿಂದ ಚಿತ್ರ ಸ್ವಲ್ಪ ನೋಡುತ್ತಿದ್ದರು ನಾವು ಯಾವುದೇ ಕೆಂಪು ಹೊಂದಿವೆ ಅಲ್ಲಿ ಈ ತರಹದ ಬಿಟ್ ಇಲ್ಲ. ನಾವು ಗುಪ್ತ ಸಂದೇಶ ಒಂದು ನೋಡಬಹುದು ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಸ್ಪಷ್ಟವಾಗಿ ಈಗ. ಇದು ಮತ್ತೊಂದು ನಗು ಮುಖದ ಇಲ್ಲಿದೆ. ಅಥವಾ ಬಹುಶಃ ನಾವು ಮತ್ತೊಂದು ವಿಧಾನವನ್ನು ಬಳಸಬಹುದು. ಬಹುಶಃ, ನಾವು ಗುರುತಿಸಲು ಕೆಂಪು ಪಿಕ್ಸೆಲ್ಗಳ ಎಲ್ಲಾ - ಎಂದು, ಪಿಕ್ಸೆಲ್ಗಳ ಎಲ್ಲಾ ಹೊಂದಿದೆ 0 ನೀಲಿ, 0 ಹಸಿರು, ಮತ್ತು ಕೆಂಪು 0 - ಮತ್ತು ಬಿಳಿ ಆ ಬದಲಾಯಿಸಲು. ಮತ್ತು ನಮ್ಮ ಚಿತ್ರವನ್ನು ನೋಡಲು ಇರಬಹುದು ಈ ರೀತಿಯ. ನೋಡಲು ಸ್ವಲ್ಪ ಸುಲಭವಾಗಿ. ಬಹಿರಂಗಪಡಿಸಲು ಇತರ ಹಾದಿಗಳಿವೆ ಇವೆ ರಹಸ್ಯ ಸಂದೇಶ ಹಾಗೂ, ಬಣ್ಣ ಕುಶಲ ವ್ಯವಹರಿಸುವಾಗ. ಬಹುಶಃ ನೀವು ವಿಧಾನಗಳಲ್ಲಿ ಒಂದನ್ನು ಬಳಸಬಹುದು ನಾನು ಮೇಲೆ ತಿಳಿಸಿದ. ಮತ್ತು ಹೆಚ್ಚುವರಿಯಾಗಿ, ನೀವು ಬಯಸಬಹುದು ಕೆಲವು ಬಣ್ಣಗಳನ್ನು ವರ್ಧಿಸಲು ಮತ್ತು ಆ ಹೊರತರುವ. ಈಗ ನಾವು ಪಿಕ್ಸೆಲ್ ಬದಲಾಯಿಸಿದ್ದರೆ ಎಂದು ಬಣ್ಣ, ಮುಂದಿನ ನಾವು ಅವುಗಳನ್ನು ಬರೆಯಲು ಅಗತ್ಯವಿದೆ ಪಿಕ್ಸೆಲ್ scanline ಗೆ, ಪಿಕ್ಸೆಲ್. ಮತ್ತು ಇನ್ನೂ ಮತ್ತೆ, ನೀವು ಮತ್ತೆ ನೋಡಲು ಬಯಸುವಿರಿ ನೀವು ಕಾಪಿ ಇದ್ದರೆ, copy.c ಗೆ ಈಗಾಗಲೇ, ಮತ್ತು fwrite ನೋಡಲು ಡೇಟಾ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಕಾರ್ಯ, ಒಂದು ಪಾಯಿಂಟರ್ ಬೈಟ್ಗಳು ಹೊಂದಿರುವ struct ಗೆ ನೀವು ಗಾತ್ರ, ಓದುವಲ್ಲಿ ಎಂಬುದನ್ನು ಐಟಂಗಳನ್ನು, ಐಟಂಗಳ ಸಂಖ್ಯೆ, ತದನಂತರ outptr - ಆ ಕಡತಗಳ ತಾಣವಾಗಿದೆ. ನೀವು ಪಿಕ್ಸೆಲ್ಗಳಲ್ಲಿ ಬರೆಯಲು ನಂತರ, ನೀವು ಮಾಡುತ್ತೇವೆ ಸಹ ಪ್ಯಾಡಿಂಗ್ ಬರೆಯಬೇಕು. ಪ್ಯಾಡಿಂಗ್ ಏನು? ಅಲ್ಲದೆ, ಪ್ರತಿ rgbt ಪಿಕ್ಸೆಲ್ ಮೂರು ಬೈಟ್ಗಳು ಉದ್ದವಾಗಿದೆ. ಆದರೆ, ಒಂದು ಬಿಟ್ಮ್ಯಾಪ್ ಚಿತ್ರಕ್ಕಾಗಿ scanline ನಾಲ್ಕು ಬೈಟ್ಗಳು ಒಂದು ಬಹು ಎಂದು ಹೊಂದಿದೆ. ಮತ್ತು ಪಿಕ್ಸೆಲ್ಗಳ ಸಂಖ್ಯೆ ವೇಳೆ ಒಂದು ನಾಲ್ಕು ಅನೇಕ, ನಾವು ಸೇರಿಸುವ ಅಗತ್ಯವಿದೆ ಈ ಪ್ಯಾಡಿಂಗ್. ಪ್ಯಾಡಿಂಗ್ ಕೇವಲ 0 ಸೆ ಪ್ರತಿನಿಧಿಸುತ್ತದೆ. ಆದ್ದರಿಂದ, ಹೇಗೆ ನಾವು ಬರೆಯಲು, ಅಥವಾ ಈ ಓದಲು ಇಲ್ಲ? ಅಲ್ಲದೆ, ಇದು ತಿರುಗಿದರೆ ನೀವು ಎಂಬುದನ್ನು ವಾಸ್ತವವಾಗಿ fread ಪ್ಯಾಡಿಂಗ್, ಆದರೆ ನೀವು ಮಾಡಬಹುದು ಲೆಕ್ಕ. ಈ ಸಂದರ್ಭದಲ್ಲಿ, ಸುಳಿವು ಮತ್ತು ತೀರ್ಪು ಒಂದೇ ಅಗಲವನ್ನು ಹೊಂದಿರುತ್ತವೆ, ಆದ್ದರಿಂದ ಪ್ಯಾಡಿಂಗ್ ಒಂದೇ. ಮತ್ತು ಪ್ಯಾಡಿಂಗ್, ನೀವು ನೋಡುತ್ತಾರೆ ಎಂದು copy.c ರಲ್ಲಿ, ಲೆಕ್ಕಾಚಾರ ಕೆಳಗೆ ಸೂತ್ರವನ್ನು - bi.biWidth ಬಾರಿ Sizeof (RGBTRIPLE) ತಿನ್ನುವೆ ಎಷ್ಟು ಬೈಟ್ಗಳು BMP ನಮಗೆ ನೀಡಿ ಪ್ರತಿ ಸತತವಾಗಿ ಹೊಂದಿದೆ. ಅಲ್ಲಿಂದ modulos ಮತ್ತು subtractions 4 ಲೆಕ್ಕ ಮಾಡಬಹುದು ಹೇಗೆ ಅನೇಕ ಬೈಟ್ಗಳು ಸೇರಿಸಬೇಕು ಆದ್ದರಿಂದ ಮೇಲೆ ಬೈಟ್ಗಳು ಅನೇಕ ಪ್ರತಿ ಸಾಲಿನ ನಾಲ್ಕು. ಈಗ ನಾವು ಸೂತ್ರ ಹೊಂದಿರುವ ನಾವು ಎಷ್ಟು ಪ್ಯಾಡಿಂಗ್, ಈಗ ನಾವು ಅದನ್ನು ಬರೆಯಬಹುದು. ಈಗ, ನಾನು ಮೊದಲೇ ಹೇಳಿದಂತೆ, ಪ್ಯಾಡಿಂಗ್ ಕೇವಲ 0 ಸೆ ಆಗಿದೆ. ಆ ಸಂದರ್ಭದಲ್ಲಿ, ನಾವು ಪುಟ್ಟಿಂಗ್ ಮಾಡುತ್ತಿರುವ ಈ ಸಂದರ್ಭದಲ್ಲಿ 0 ಚಾರ್, ನಮ್ಮ outptr - ನಮ್ಮ outfile. ಆದ್ದರಿಂದ ಕೇವಲ fputc ಮಾಡಬಹುದು 0 ಅಲ್ಪವಿರಾಮ outptr. ಆದ್ದರಿಂದ, ನಾವು ಒಳಗೆ ಓದುವ ನಾವು ನಮ್ಮ ಫೈಲ್, ಕಡತ I / O ನ ಟ್ರ್ಯಾಕ್ ಇಟ್ಟುಕೊಂಡಿದೆ ನಮ್ಮ ಏನೋ ಆ ಕಡತಗಳನ್ನು ಸ್ಥಾನವನ್ನು ಕಡತ ಸ್ಥಾನವನ್ನು ಸೂಚಕ ಎಂಬ. ಒಂದು ಕರ್ಸರ್ ಎಂದೇ ತಿಳಿಯುತ್ತಾರೆ. ಮೂಲತಃ, ಇದು ಪ್ರತಿ ಬಾರಿ ಬೆಳವಣಿಗೆಗಳು ನಾವು fread, ಆದರೆ ನಾವು ಹೊಂದಿರುವ ತುಂಬಾ, ಇದು ನಿಯಂತ್ರಣವನ್ನು. ಕಡತ ಸ್ಥಾನವನ್ನು ಸೂಚಕ ಸರಿಸಲು, ನೀವು ಕಾರ್ಯ fseek ಬಳಸಬಹುದು. Inptr ಕಡತ ನಿರೂಪಿಸುತ್ತದೆ ನೀವು ಹುಡುಕುತ್ತಿರುವ ಆ ಪಾಯಿಂಟರ್, ಪ್ರಮಾಣದ ಬೈಟ್ಗಳು ಸಂಖ್ಯೆ ಎಂದು ನೀವು ನಂತರ ಕರ್ಸರ್ ಸರಿಸು ಮತ್ತು ಬಯಸುವ ಉಲ್ಲೇಖ ಪಾಯಿಂಟ್ ಸಂಬಂಧಿಸಿದೆ ನಿಮ್ಮ ಕರ್ಸರ್ ಸ್ಥಳದಿಂದ. ನೀವು SEEK_CUR ಹಾದು ನೀವು ಎಂದು ಪ್ರಸ್ತುತ ಪ್ರತಿನಿಧಿಸುತ್ತದೆ ಕಡತದಲ್ಲಿ ಸ್ಥಾನವನ್ನು. ಅಥವಾ ನೀವು ಕೆಲವು ಇತರೆ ನಿಯತಾಂಕಗಳನ್ನು ಬಳಸಬಹುದು. ಆದ್ದರಿಂದ, ನಾವು ತೆರಳಿ fseek ಬಳಸಲು ಬಯಸಬಹುದು ಕಡತದ ಪ್ಯಾಡಿಂಗ್ ಮೇಲೆ. ನೀವು ಅಂಟಿಕೊಂಡಿತು ಬಳಸುತ್ತಿದ್ದರೆ ಮತ್ತೆ,, ಇಲ್ಲ copy.c. ಆ ಒಂದು ಉದಾಹರಣೆ ಈಗ ನಾವು ಫೈಲ್ ತೆರೆಯಿತು ನಾವು, ಸುಳಿವು, ಮತ್ತು ತೀರ್ಪು. ನಾವು ಹೆಡರ್ ಮಾಹಿತಿಯನ್ನು ಅಪ್ಡೇಟ್ಗೊಳಿಸಲಾಗಿದೆ ಬಂದಿದೆ ನಮ್ಮ ತೀರ್ಪು, ಏಕೆಂದರೆ ಪ್ರತಿ ಬಿಟ್ಮ್ಯಾಪ್ ಒಂದು ಹೆಡರ್ ಅಗತ್ಯವಿದೆ. ನಾವು ನಂತರ ಸುಳಿವು ನ ಒಳಗೆ ಓದಿದ scanline, ಪಿಕ್ಸೆಲ್ ಮೂಲಕ ಪಿಕ್ಸೆಲ್, ಬದಲಾಗುತ್ತಿರುವ ಪ್ರತಿ ಬಣ್ಣ ಅಗತ್ಯ, ಮತ್ತು ಆ ಬರೆಯಲು ತೀರ್ಪು, ಪಿಕ್ಸೆಲ್ ಮೂಲಕ ಪಿಕ್ಸೆಲ್. ನೀವು ತೀರ್ಪು ತೆರೆಯಲು ಒಮ್ಮೆ ನೋಡಬಹುದು ಯಾರು ಅಪರಾಧಿ, ಅಥವಾ ಯಾವ ರಹಸ್ಯ ಸಂದೇಶ. ನನ್ನ ಹೆಸರು Zamyla ಹೊಂದಿದೆ, ಮತ್ತು ಈ ವೊಡುನಿಟ್ ಆಗಿತ್ತು.