>백엔드 개발 >C++ >PGM 형식으로 이미지를 쓰는 C 프로그램

PGM 형식으로 이미지를 쓰는 C 프로그램

WBOY
WBOY앞으로
2023-09-16 22:01:01830검색

PGM은 휴대용 회색조 지도입니다. C의 2D 배열을 PNG, JPEG 또는 기타 이미지 형식의 이미지로 저장하려면 파일에 쓰기 전에 지정된 형식으로 데이터를 인코딩하기 위해 많은 작업을 수행해야 합니다.

Netpbm 형식은 간단하고 이식 가능한 솔루션을 제공합니다. Netpbm은 기본적으로 Linux 또는 Unix 플랫폼에서 사용되는 오픈 소스 그래픽 패키지입니다. 또한 Microsoft Windows 시스템에서도 실행됩니다.

모든 파일은 2바이트 매직 넘버로 시작됩니다. 이 매직넘버는 파일의 종류를 식별하는데 사용됩니다. 종류에는 PBM, PGM, PPM 등이 있습니다. 또한 인코딩(ASCII 또는 바이너리)을 식별합니다. 매직넘버는 대문자 P 뒤에 숫자가 오는 형태입니다.

ASCII 인코딩을 사용하면 사람이 쉽게 읽을 수 있고 다른 플랫폼으로 쉽게 전송할 수 있습니다. 바이너리 형식은 파일 크기 측면에서 더 효율적이지만 기본 바이트 순서 문제가 있을 수 있습니다.

PGM 파일을 작성하는 방법은 무엇입니까?

  • 매직 넘버 P2 설정
  • 공백 추가(공백, 탭, CR, LF)
  • 너비 추가, 십진수 ASCII 문자 형식
  • 공백 추가
  • 높이 추가, 십진수 ASCII 문자 형식
  • 공백 추가
  • 최대 그레이스케일 값을 ASCII 십진 형식으로 입력하세요.
  • 공백을 추가하세요.
  • 너비 x 높이 그레이스케일 값, 각 값은 위에서 아래까지 공백으로 구분된 ASCII 십진수(0에서 최대값 사이의 범위)입니다.

샘플 코드

#include <stdio.h>
main() {
   int i, j;
   int w = 13, h = 13;
   // This 2D array will be converted into an image The size is 13 x 13
   int image[13][13] = {
      { 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15 },
      { 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31},
      { 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47},
      { 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63},
      { 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79},
      { 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95 },
      { 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111},
      { 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127},
      { 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143},
      { 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159},
      { 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175},
      { 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191},
      { 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207}
   };
   FILE* pgmimg;
   pgmimg = fopen("my_pgmimg.pgm", "wb"); //write the file in binary mode
   fprintf(pgmimg, "P2</p><p>"); // Writing Magic Number to the File
   fprintf(pgmimg, "%d %d</p><p>", w, h); // Writing Width and Height into the
   file
   fprintf(pgmimg, "255</p><p>"); // Writing the maximum gray value
   int count = 0;
   for (i = 0; i < h; i++) {
      for (j = 0; j < w; j++) {
         fprintf(pgmimg, "%d ", image[i][j]); //Copy gray value from
         array to file
      }
      fprintf(pgmimg, "</p><p>");
   }
   fclose(pgmimg);
}

PGM 이미지는 아래와 같습니다

Output

PGM 형식으로 이미지를 쓰는 C 프로그램

위 내용은 PGM 형식으로 이미지를 쓰는 C 프로그램의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제