[ಸಂಗೀತ] ZAMYLA ಚಾನ್: ಲೆಟ್ಸ್ ಬ್ಲೋ ಗಣಕತೆರೆ ಕೆಲಸಗಳನ್ನು ಅಪ್. ಗಣಕತೆರೆ ರಲ್ಲಿ ಬಳಕೆದಾರ ಮೂಲಕ, ಹಾದು ಹೋಗಲಿದೆ ಆಜ್ಞಾ ಸಾಲಿನಲ್ಲಿ, ಒಂದು ಬಿಟ್ಮ್ಯಾಪ್ ಚಿತ್ರ ಎಂದು ಅವರು ನೀವು ಅನೇಕ ಅಳೆಯುವ ಬಯಸುವ ಅವರು, ಹಾದು ಆಜ್ಞಾ ಸಾಲಿನಲ್ಲಿ. ಹೇಗೆ ನಾವು ಏನು ಇಲ್ಲ? ಅಲ್ಲದೆ, ಮೊದಲ ಮೊದಲ ವಿಷಯಗಳನ್ನು ಅವಕಾಶ ತಂದೆಯ ಹಂತಗಳನ್ನು ಈ ಮುರಿಯಲು. ನೀವು, infile ತೆರೆಯಲು ಬಯಸುವ ನೀನು ಅವರು ನೀವು ನೀಡಲು, ಹಾಗೆಯೇ ಆ ರಚಿಸಲು ಮತ್ತು outfile ತೆರೆಯುವ ನೀವು ಹಾಕಲು ನೀನು ಸೈನ್ ಗಾತ್ರ ಚಿತ್ರ ನಂತರ, ನೀವು ಮರುಗಾತ್ರಗೊಳಿಸಲು, ಮತ್ತು ಏಕೆಂದರೆ ಇದು ಒಂದು ಬಿಟ್ಮ್ಯಾಪ್ ಏಕೆಂದರೆ, ಇದು ಒಂದು ಹೆಡರ್, ಆದ್ದರಿಂದ ನೀವು ಹೆಡರ್ ನವೀಕರಿಸಲು ನೀನು outfile ಫಾರ್ ಮಾಹಿತಿ, ಮತ್ತು ಸೈನ್ ಎಂದು ಬರೆಯಲು ನಂತರ, ನೀವು ಒಳಗೆ ಓದಲು ನೀನು , infile ಆಫ್ scanline, ಪಿಕ್ಸೆಲ್ ಮೂಲಕ ಪಿಕ್ಸೆಲ್, ಅಡ್ಡಡ್ಡಲಾಗಿ ಮರುಗಾತ್ರಗೊಳಿಸಲು ಮತ್ತು ಆ ಪಿಕ್ಸೆಲ್ಗಳು ಬರೆಯಲು outfile, ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಬಳಕೆದಾರರ ಪ್ರಮಾಣದ ಮೂಲಕ. ನೀವು ನೆನಪಿಡುವ ನೀನು ಅಗತ್ಯ ಪ್ಯಾಡಿಂಗ್ ಸೇರಿಸಲು. ನಂತರ ಮೇಲೆ ಹೆಚ್ಚು. ತದನಂತರ ಲಂಬವಾಗಿ ಗಾತ್ರವನ್ನು. ಸರಿ. ಆದ್ದರಿಂದ ಈ ಸ್ವಲ್ಪ ಏರಲಿದೆ ಇದು ಡನ್ ಯಾರು ಹೆಚ್ಚು ಸಂಕೀರ್ಣ, ಆದರೆ ಏನು ಹೋಲುತ್ತದೆ ಎಂದು copy.c ಹೊಂದಿದೆ, ಮತ್ತೆ, ತುಂಬಾ ಉಪಯುಕ್ತ ಸಾಬೀತು. , Copy.c ಒಂದು ಕಡತವನ್ನು ತೆರೆಯುತ್ತದೆ ನೆನಪಿಡಿ ಹೆಡರ್ ಮಾಹಿತಿಯನ್ನು ನವೀಕರಣಗಳನ್ನು outfile, ನಂತರ scanline ಓದುತ್ತದೆ, ಪಿಕ್ಸೆಲ್ ಮೂಲಕ ಪಿಕ್ಸೆಲ್, ಪ್ರತಿ ಪಿಕ್ಸೆಲ್ ಬರೆಯಲು ಔಟ್ಪುಟ್ ಕಡತವನ್ನು ನ scanline ಒಳಗೆ. ಆದ್ದರಿಂದ ಮತ್ತೆ, ನಿಮ್ಮ ಮೊದಲ ಹಂತದ ಬಹುಶಃ ಮಾಡಬಹುದು CP, copy.c, resize.c ಎಂದು ನಿಮ್ಮ Pset5 ಕೋಶಕ್ಕೆ. ನೀವು ಅದನ್ನು ನಕಲಿಸಿ ಮೊದಲು, ಆದರೂ ನೆನಪಿಡಿ, ನೀವು ಅರ್ಥ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ ಆಳವಾಗಿ copy.c. ಸರಿ. ಆದ್ದರಿಂದ ಒಂದು ಕಡತವನ್ನು ತೆರೆಯಲು ಅವಕಾಶ. ನೀವು ಹಾಗೆ ಹೇಗೆ ಗೊತ್ತು. ನಾನು ನಿಮಗೆ ಆ ಬಿಡಲು ಪಡೆಯಲಿದ್ದೇನೆ. ಮುಂದೆ, ಹೆಡರ್ ಮಾಹಿತಿಯನ್ನು ಅಪ್ಡೇಟ್ outfile ಫಾರ್. ನಾವು ಹೊಸ ಬಿಟ್ಮ್ಯಾಪ್ ಏಕೆಂದರೆ, ನಾವು ಹೊಸ ಹೆಡರ್ ಮಾಹಿತಿಯನ್ನು ಹೊಂದಿವೆ. ಇಲ್ಲಿಗೆ ಯಾವ ಬದಲಾವಣೆ? ಅಲ್ಲದೆ, ಫೈಲಿನ ಗಾತ್ರ ಬದಲಾಯಿಸಲು ಹೋಗುತ್ತದೆ ನಾವು ಹೆಚ್ಚು ಮಾಡಲಿಕ್ಕೆ ಏಕೆಂದರೆ ಹಿಂದಿಗಿಂತ ಪಿಕ್ಸೆಲ್ಗಳು. ಚಿತ್ರದ ಗಾತ್ರ ಸಹ, ಹೀಗೆ, ಆಗಿದೆ ಎಂದು, ಬದಲಿಸಲು ಹೋಗಿ ಅಗಲ ಮತ್ತು ಎತ್ತರ. ಆದ್ದರಿಂದ ಇದು ಅಸ್ಥಿರ ಆ ನಿಖರವಾಗಿ, ಅವು? ಅಲ್ಲದೆ, ನೀವು ಹೆಡರ್ ತನಿಖೆ ವೇಳೆ ಮಾಹಿತಿ, ನೀವು ಅಲ್ಲಿ ನೋಡಿ ಒಟ್ಟು ಪ್ರತಿನಿಧಿಸುವ biSizeImage, ಬೈಟ್ಗಳು ಚಿತ್ರದ ಗಾತ್ರ, ಪಿಕ್ಸೆಲ್ಗಳು ಮತ್ತು ಪ್ಯಾಡಿಂಗ್ ಸೇರಿದಂತೆ. biWidth ಚಿತ್ರದ ಅಗಲ ಪಿಕ್ಸೆಲ್ಗಳಲ್ಲಿ, ಪ್ಯಾಡಿಂಗ್ ಮೈನಸ್. biHeight ಎತ್ತರವು ಪಿಕ್ಸೆಲ್ಗಳಲ್ಲಿ ಚಿತ್ರ. ಮತ್ತು ಆದ್ದರಿಂದ ಆ ಒಳಗೊಂಡಿರುವ ಸ್ಟ್ರಕ್ಟ್ಸ್ಳ BITMAPFILEHEADER ಮತ್ತು BITMAPINFOHEADER. ನೀವು ಮೂಲಕ ಇದು ಒಂದು ಹೇಳಬಹುದು bmp.h ಹೋಗುವ ಮತ್ತು ನೋಡುವ BITMAPINFOHEADER struct ಮತ್ತು ವೀಕ್ಷಣೆ ಅಸ್ಥಿರ ಪಟ್ಟಿ. ಆದ್ದರಿಂದ outfiles ಹೆಡರ್ ನವೀಕರಿಸಲು ಮಾಹಿತಿ, ನೀವು ಬಯಸುವ ನೀನು ಆ ಮೌಲ್ಯಗಳನ್ನು ಬದಲಾಯಿಸಲು ಎತ್ತರ ಮತ್ತು ಅಗಲ. ಆದರೆ ಅವಕಾಶಗಳನ್ನು ನೀವು ಕೆಲವು ಬೇಕು , infile ಹೆಡರ್ ಮಾಹಿತಿಯನ್ನು ನಂತರ, ಆದ್ದರಿಂದ ಉತ್ತಮ ಎರಡೂ ಕಾಪಾಡುವುದು. ಆದರೆ ನಿಮ್ಮ ವೇರಿಯಬಲ್ ಅತ್ಯಂತ ಸ್ಪಷ್ಟವಾದ ಹೆಸರುಗಳು ಆದ್ದರಿಂದ ನೀವು ಅಲ್ಲ ಆಕಸ್ಮಿಕವಾಗಿ ತಪ್ಪಾಗಿದೆ ಮೌಲ್ಯಗಳನ್ನು ಬರೆಯಲು outfile ಫಾರ್ ಹೆಡರ್. ಈಗ ಒಳಗೆ ಓದುವ ಪಡೆಯಲು ಅವಕಾಶ scanline ಪಿಕ್ಸೆಲ್ ಮೂಲಕ ಪಿಕ್ಸೆಲ್. ಮತ್ತೆ, ನಾವು ನಮ್ಮ ನಂಬಲರ್ಹ ಮಾಡಲು ನೀನು I / O lib ಫೈಲ್, ಮತ್ತು ನೋಡಲು fread ಕಾರ್ಯ. fread ಒಂದು struct ಒಂದು ಪಾಯಿಂಟರ್ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಬೈಟ್ಗಳು ಹೊಂದಿರುವ ಆ ನೀವು ಓದುವ ಬಳಸುತ್ತಿದ್ದರೆ, ಪ್ರತಿ ಗಾತ್ರ ನೀವು ಓದುವ ನೀವು ಅಂಶ - ಮತ್ತೆ, sizeof ಉಪಯುಕ್ತ ಏರಲಿದೆ ಇಲ್ಲಿ ಕಾರ್ಯ, ಸಂಖ್ಯೆ ನೀವು ಎಂಬುದನ್ನು ಗಾತ್ರ, ಗಾತ್ರ ಅಂಶಗಳನ್ನು, ನಂತರ ಅಂತಿಮವಾಗಿ ಓದುವ, ಮತ್ತು, inpointer, ಕಡತ ಎಂದು ನೀವು ಓದುವ ನೀವು. ಆದ್ದರಿಂದ ನೀವು ಸಂಖ್ಯೆ ಅಂಶಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳುವ ನೀವು inpointer ಗಾತ್ರ, ಮತ್ತು ಡೇಟಾ ಅವುಗಳನ್ನು ಹಾಕುವ. ಈಗ ಅಡ್ಡಲಾಗಿ ಮರುಗಾತ್ರಗೊಳಿಸಲು ಸಮಯ. ಎನ್ ಪ್ರತಿಯೊಂದು ಪಿಕ್ಸೆಲ್ಗೆ ನಂತರ, 2 ಸಮನಾಗಿರುತ್ತದೆ , infile, ನಾವು ಬರೆಯಲು ನೀನು ಎರಡು ಬಾರಿ outfile ರಲ್ಲಿ. ಹೇಗೆ ನಾವು ಕಡತಗಳನ್ನು ಬರೆಯುವಿರಾ? ಹಾಗೆಯೇ, ನಾವು ರಚಿಸುವಲ್ಲಿ ಫಂಕ್ಷನ್, ಆದ್ದರಿಂದ ನಾವು struct ಸೂಚಕವನ್ನು ತೆಗೆದುಕೊಳ್ಳಬಹುದು ನೀವು ನೀವು ಬೈಟ್ಗಳು ಹೊಂದಿದೆ ಬರೆಯುವ, ಮತ್ತು ನಂತರ ನಾವು ಹಾದು ಗಾತ್ರ, ಸಂಖ್ಯೆ, ಹಾಗು ಔಟ್ಪುಟ್, ಅಲ್ಲಿ ನೀವು ಎಂದು ಬರೆಯಲು ನೀನು. ತದನಂತರ ಒಂದು ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪುನರಾವರ್ತಿಸುವಂತೆ, ಎಂದು ಲೂಪ್ ಸಾಧ್ಯವಾಗುತ್ತದೆ ಸರಳ ರೋಗ. ಆದರೆ ನಾವು ನೆನಪಿಡುವ ಅಗತ್ಯವಿರುವುದಿಲ್ಲ ಸೈನ್ ಪ್ಯಾಡಿಂಗ್ ಸೇರಿಸಲು ಪ್ಯಾಡಿಂಗ್ ಪರಿಕಲ್ಪನೆಯನ್ನು ಎಂದು, ಮತ್ತು, ಪ್ರತಿ ಪಿಕ್ಸೆಲ್ ಮೂರು ಕಡಿತದ, ಆದರೆ ಪ್ರತಿ scanline ಮಸ್ಟ್ ಗಾತ್ರ 4 ಬೈಟ್ಗಳು ಒಂದು ಬಹು ಎಂದು. ಆದ್ದರಿಂದ ಪಿಕ್ಸೆಲ್ಗಳ ಸಂಖ್ಯೆ ವೇಳೆ ಒಂದು 4 ಅನೇಕ, ನಾವು ಕೆಲವು ಸೇರಿಸುವ ಅಗತ್ಯವಿದೆ ಕೇವಲ ಸೊನ್ನೆಗಳ ಇದು ಪ್ಯಾಡಿಂಗ್,. ಈಗ, ಇದನ್ನು ಯಾರು ಭಿನ್ನವಾಗಿ, ಮತ್ತು ಭಿನ್ನವಾಗಿ ಪ್ರತಿಯನ್ನು ನಂತರ, infile ಚಿತ್ರ ಮತ್ತು outfile ಫೈಲ್ ವಿವಿಧ ಹೊಂದಿರುವುದಿಲ್ಲ ವಿವಿಧ ಪ್ಯಾಡಿಂಗ್ ಅವರು ಆರ್ ಏಕೆಂದರೆ ವಿವಿಧ ಅಗಲ. ಸರಿ. ಆದ್ದರಿಂದ ಬಹುಶಃ ಸೂತ್ರವನ್ನು ಎಂದು ಇಲ್ಲಿ HANDY ಬರುತ್ತವೆ. ನಾನು ಕಂಡುಹಿಡಿಯಲು ನಿಮಗೆ ಅದನ್ನು ಬಿಟ್ಟು ಮಾಡುತ್ತೇವೆ, ಆದರೆ ಪ್ಯಾಡಿಂಗ್ ಬರೆಯಲು, ಎಂದು ಹೇಳಲು, ಅಲ್ಲದೆ, ಇದನ್ನು ಕೇವಲ ಒಂದು ಸರಳ fputc ಕಾರ್ಯ ನ, ಮೀ ಸಾಗುವ ನೀವು ನಂತರ ಬರೆಯಲು ಬಯಸುವ, ಮತ್ತು ಆ ಕಡತ ಪಾಯಿಂಟರ್ ನೀವು ಬರೆಯಲು ಮಾಡಿ. ಈಗ ನಾವು, ಅಡ್ಡಡ್ಡಲಾಗಿ ಗಾತ್ರ ಎಂಬುದನ್ನು ತದನಂತರ, ಪ್ಯಾಡಿಂಗ್ ಬಳಸಲಾಗುತ್ತದೆ ನಿಮ್ಮ ಕಡತ ಚಲಿಸಬೇಕಾಗುತ್ತದೆ ನೆನಪು ಸ್ಥಾನವನ್ನು ಸೂಚಕ, ನೀವು ಏಕೆಂದರೆ ಪ್ಯಾಡಿಂಗ್ ಒಳಗೆ fread ಸಾಧ್ಯವಿಲ್ಲ. ಆದ್ದರಿಂದ ನೀವು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ ಬಯಸುವ ನಿಮ್ಮ ಕಡತ , infile ಸ್ಥಾನವನ್ನು ಸೂಚಕ ಸರಿಯಾದ ಹಂತದಲ್ಲಿ ಇದು. ನಾವು ಬಯಸುವ ಕಾರಣ ಲಂಬವಾಗಿ ಗಾತ್ರವನ್ನು. ನಾವು, ಅಡ್ಡಲಾಗಿ ಇದು ವಿಸ್ತಾರಗೊಳಿಸಬಹುದು ಸಾಧ್ಯವಿಲ್ಲ ಪ್ರತಿ ಸಾಲಿನ ಅಗತ್ಯವಿದೆ ಏಕೆಂದರೆ N ಬಾರಿ ನಕಲು ಮಾಡಲು. ಈಗ, ವಿವಿಧ ಹಲವಾರು ಇವೆ ಈ ಮಾಡಲು ರೀತಿಯಲ್ಲಿ. ಆದ್ದರಿಂದ, ನಾವು ರಲ್ಲಿ, ಪುನಃ ಬರೆಯುವಂತೆ ವಿಧಾನವನ್ನು ಬಳಸಬಹುದು ನಾವು ಪಿಕ್ಸೆಲ್ಗಳು ಎಲ್ಲಾ ನೆನಪು ಒಂದು ನಿರ್ದಿಷ್ಟ ವಿನ್ಯಾಸಗಳನ್ನು ಸಾಲು, ಮತ್ತು ನಂತರ ನಾವು ಆ ಸರಣಿ ಬರೆಯಲು ಅನೇಕ ಬಾರಿ ಅಗತ್ಯವಿರುವ. ಅಥವಾ ಅಲ್ಲಿ recopy ವಿಧಾನವು ಇಲ್ಲ, , infile ಸಾಲು ಓದಿದ ನಂತರ ಮತ್ತು ತದನಂತರ outfile ಎಂದು ಬರೆಯುವ ಪ್ಯಾಡಿಂಗ್ ಸೇರಿಸುವ, ನಾವು fseek ಮೂಲ ಸಾಲು ಶುರುವಾಗುವ ಹಿಂದಕ್ಕೆ, ಮತ್ತು ನಂತರ ಸಮತಲ ಪುನರಾವರ್ತಿಸಲು ಅಲ್ಲಿಂದ ಮರುಗಾತ್ರಗೊಳಿಸಲು. ಹೊರತಾಗಿ ವಿಧಾನದ, ಆದರೂ, ನೀವು ಮಾಡುತ್ತೇವೆ ಪ್ರತಿ ಪಿಕ್ಸೆಲ್ ಪುನರಾವರ್ತಿಸಬಹುದು ಬಯಸುವ N ಬಾರಿ, ಮತ್ತು ಪ್ರತಿ ಸಾಲು ಎಂದು ಹಾಗೆಯೇ N ಬಾರಿ ಪುನರಾವರ್ತನೆಯಾಯಿತು. ಎಂದು, ನೀವು ಬಿಟ್ಮ್ಯಾಪ್ ಹೊಂದಿರುತ್ತದೆ ಜೀವನದ ದೊಡ್ಡ. ನನ್ನ ಹೆಸರು Zamyla ಹೊಂದಿದೆ, ಮತ್ತು ಈ CS50 ಹೊಂದಿದೆ.