ifstream读图
#include <fstream>
#include <iostream>
using namespace std;
int main(){
ifstream is("C:\\Users\\zhazha\\Desktop\\test2.jpg", ifstream::in);
is.seekg(0, is.end);
int length = is.tellg();
std::cout << length << std::endl;
char * buffer = new char[length];
is.seekg(0, is.beg);
is.read(buffer, length);
for (int i=0; i<length; i++){
std::cout << (int)(unsigned char)buffer[i] << " ";
if ((i+1) % 20 == 0)
std::cout << std::endl;
}
delete [] buffer;
return 0;
}
stdio读写
#include <stdio.h>
#include <string.h>
int main()
{
FILE *fp = fopen("C:\\Users\\zhazha\\Desktop\\test2.jpg", "r+");
fseek(fp, 0, SEEK_END);
int len = ftell(fp);
printf("len is %d\n", len);
unsigned char buffer[len];
fseek(fp, 0, SEEK_SET);
fread(buffer, len, 1, fp);
for (int i=0; i<len; i++){
printf("%d ", buffer[i]);
if ((i+1) % 20 == 0)
printf("\n");
}
fseek(fp, 0, SEEK_SET);
fwrite(buffer, strlen((char *)buffer), 1, fp);
fclose(fp);
return(0);
}
特点
- 使用两种方法读取相同图片时,输出除了开头其余的都不一样;
- 使用其中任意一种方法多次读取相同图片时,每次的输出在开头的某几位上不同。