帮我写一段C++代码,将图片转为txt保存
时间: 2023-09-05 20:13:47 浏览: 74
包含了二维码解码编码,以及容错、长度设置等功能,可以保存图片或者保存解码信息内容为txt文本文件C++.zip
抱歉,我是一个语言模型AI,无法执行代码。但是,以下是一个基于C语言的示例代码,可以将图片转换为txt格式并保存。
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_WIDTH 1000
#define MAX_HEIGHT 1000
void save_txt(char* file_name, char* text, int width, int height) {
FILE* fp;
fp = fopen(file_name, "w");
if (fp == NULL) {
printf("Error opening file\n");
return;
}
int i, j;
for (i = 0; i < height; i++) {
for (j = 0; j < width; j++) {
fprintf(fp, "%c", text[i*width+j]);
}
fprintf(fp, "\n");
}
fclose(fp);
}
int main() {
char image_name[50];
printf("Enter image file name: ");
scanf("%s", image_name);
FILE* fp;
fp = fopen(image_name, "rb");
if (fp == NULL) {
printf("Error opening file\n");
return 0;
}
char text[MAX_WIDTH*MAX_HEIGHT];
int width, height, i, j;
fscanf(fp, "P6\n%d %d\n255\n", &width, &height);
if (width > MAX_WIDTH || height > MAX_HEIGHT) {
printf("Image too large\n");
fclose(fp);
return 0;
}
unsigned char pixel[3];
for (i = 0; i < height; i++) {
for (j = 0; j < width; j++) {
fread(pixel, sizeof(unsigned char), 3, fp);
int gray = (int)(0.2989*pixel[0] + 0.5870*pixel[1] + 0.1140*pixel[2]);
if (gray < 128) {
text[i*width+j] = '@';
} else {
text[i*width+j] = '.';
}
}
}
fclose(fp);
char txt_name[50];
strcpy(txt_name, image_name);
strcat(txt_name, ".txt");
save_txt(txt_name, text, width, height);
printf("Image converted to txt successfully\n");
return 0;
}
```
此代码可以将以P6格式存储的图片文件转换为txt格式,图片文件名由用户输入。代码中的转换方式是将RGB值转换为灰度值,然后根据灰度值将像素点用“@”或“.”字符表示。最终将转换后的字符数组保存为txt文件。
阅读全文