> 백엔드 개발 > C++ > 본문

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

WBOY
풀어 주다: 2023-09-16 22:01:01
앞으로
797명이 탐색했습니다.

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으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿