您的位置:首页 > 理论基础 > 计算机网络

【C++】保存网络获取的图片至本地

2015-09-04 13:49 549 查看
前言

从网络上获取了图片数据之后,如何保存到本地的问题?

本篇是上一篇《【C++】GET、POST网络请求boost.asio实现》的姊妹篇。

无论是GET还是POST,获取的数据均以std::string类型返回,若是图片怎么办?

其实代码写出来很简单,实现方式如下:

博文首发:http://blog.csdn.net/duzixi

源代码

ImgWriter.h
//
//  ImgWriter.h
//
//  Created by duzixi.com on 15/8/27.
//

#include <stdio.h>
#include <iostream>
#include <fstream>

using namespace std;

// 指定本地路径,保存文件
void WriteImgLocal(const char* path, string imgStr);


ImgWriter.cpp
//
//  ImgWriter.cpp
//
//  Created by duzixi.com on 15/8/27.
//

#include "ImgWriter.h"

using namespace std;

// 指定本地路径,保存文件
void WriteImgLocal(const char* path, string imgStr)
{
long size = imgStr.length();

// 1. 定义保存图片的文件
FILE *ofile = fopen(path, "wb");

// 2. 再将string类型转换为char数组
char* imgCharArray = new char[size];
for(int i = 0; i <= size; i++){
imgCharArray[i] = imgStr[i];
}

// 3. 最后将char数组输出保存为图片文件
fwrite(imgCharArray, sizeof(char), size, ofile);

fclose(ofile); // 关闭文件
}


后语

在这个例子里,保存图像文件时需要将string类型转换为char数组是核心关键。

换了新工作之后,没想到会这么快就介入C++的内容。

看似基本简单的功能,若是不熟悉鼓弄起来真是花费好久。

看到很多本质层面的东西,视野也透亮了很多。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: