0
필자는 왜 내 프로그램이 입력 이미지를 다시 인쇄하고 있는지 알아 내려고 노력했습니다. 내 다른 기능이 작동하는지는 알지만, 어떤 이유로이 문제는 나를 뒤적 거리며 나는 픽셀을 움직이려 고 생각할 수있는 모든 방법을 시도했지만 절대 시도한 것은 아무것도 시도하지 않았습니다.미러 기능을 수행 한 후 이미지를 다시 인쇄하는 프로그램
헤더 :
#include <stdio.h>
#include <stdlib.h>
struct pixel {
char r, g, b;
};
int g_width, g_height;
void parseHeader(FILE *input);
void parseImage(FILE *input, struct pixel *theArray);
void print(struct pixel a[]);
void my_Mirror(struct pixel a[]);
void rotate(struct pixel a[]);
void my_Flip(struct pixel a[]);
주 :
#include "transform.h"
int main (int argc, char *argv[]) {
// declarations here
FILE *inFile;
// open input file
inFile = fopen(argv[2],"r");
if (inFile == NULL)
{
fprintf(stderr, "File open error. Exiting program\n");
exit(1);
}
// parseHeader function call here
parseHeader(inFile);
// malloc space for the array (example given in assignment write-up)
struct pixel * image =
(struct pixel *) malloc(sizeof(struct pixel) * g_width * g_height);
// parseImage function call here
parseImage(inFile, image);
// close input file
fclose(inFile);
// manipulate the image according to command-line parameter
// 1: mirror image
// 2: upside down image
// 3: rotate to the right 90 degrees
if (atoi(argv[1]) == 1)
{
my_Mirror(image);
}
if (atoi(argv[1]) == 2)
{
my_Flip(image);
}
if (atoi(argv[1]) ==3)
{
rotate(image);
}
print(image);
return 0;
}
거울 :
void my_Mirror(struct pixel a[])
{
int i,j,limit = 0;
struct pixel temp;
for(j = 0; j < g_height; ++j) //move through vertical pixels
{
for(i = 0; i < (g_width/2); i++)
{
temp = a[(j * g_width) + i];
a[(j * g_width) + i] = a[((j+1)*g_width) - (1 + i)];
a[((j+1)*g_width) - (1 + i)] = temp;
}
}
}
이 그 도움이된다면 미러 콜까지 작동 내 수평 플립 기능입니다 :
#include "transform.h"
void my_Flip(struct pixel a[])
{
struct pixel temp;
int i;
int j = 0;
for (i = (g_width * g_height); i >= 0; --i)
{
temp = a[i];
a[i] = a[(i-i)+j]; //swap values of pixels
a[(i-i)+j] = temp;
++j;
if(j == (g_width * g_height)/2)
{
i = 0;
}
}
my_Mirror(a);
}
당신은 실제로 오히려 방어 적이기'보다 일반 과제와 픽셀 구조체를 복사 할 수 있습니다()': 그래서 여기
는 질문에 가능한 솔루션입니다. – Dmitri
@ Jongware, 나는 비슷한 기능을하기 때문에 mirror 함수를 호출 할 때까지 작동하는 수평 플립 함수도 제공했습니다. 나는 완전한 손실에 있기 때문에 더 조사하는 데 도움이되기를 바랍니다. –
업데이트 친구들, 나는 어리 석다. 플립 기능에서 호출 된 것처럼 거울 기능이 작동한다는 것을 실제로 깨닫지 못했다. 그래서 내 주류에서 부르는 방식에 뭔가 문제가있을거야. –