c++ curl实现post请求图片用法 - removebg移除背景

本文档展示了一个C++程序,该程序通过POST请求使用remove.bg API来移除图片背景。代码中设置了HTTP头,包括X-API-Key,并提供了处理返回数据的回调函数。示例中使用了https://www.remove.bg/example.jpg作为输入图片,返回结果被保存到本地文件curlposttest.png。
摘要由CSDN通过智能技术生成

removebg 移除背景API

一、post请求

二.Image URL 用法

注意file打开方式必须二进制写入 "wb"

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <curl/curl.h>
#pragma warning(disable:4996)
using namespace std;

#define POSTURL    "https://api.remove.bg/v1.0/removebg"
#define POSTFIELDS "image_url=https://www.remove.bg/example.jpg"
#define FILENAME   "curlposttest.png"

size_t write_data(void* buffer, size_t size, size_t nmemb, void *stream)
{
	FILE *fptr = (FILE*)stream;
	fwrite(buffer, size, nmemb, fptr);
	return size * nmemb;
}

int main(int argc, char *argv[])
{
	CURL *curl;
	CURLcode res;
	FILE* fptr;
	struct curl_slist *http_header = NULL;

	if ((fptr = fopen(FILENAME, "wb")) == NULL)
	{
		fprintf(stderr, "fopen file error:%s\n", FILENAME);
		return -1;
	}

	curl = curl_easy_init();
	if (!curl)
	{
		fprintf(stderr, "curl init failed\n");
		return -1;
	}

	//设置curl的请求头
	  struct curl_slist* header_list = NULL;
	  header_list = curl_slist_append(header_list, "X-API-Key:tCxQNq8x7dfyceeCS7LFeY5M");//Content-Type:application/x-www-form-urlencoded  Content-Type:application/json
	  curl_easy_setopt(curl, CURLOPT_HTTPHEADER, header_list);

	//设置ssl验证
	curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);
	curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, false);


	curl_easy_setopt(curl, CURLOPT_URL, POSTURL); //url地址
	curl_easy_setopt(curl, CURLOPT_POSTFIELDS, POSTFIELDS); //post参数
	curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); //对返回的数据进行操作的函数地址
	curl_easy_setopt(curl, CURLOPT_WRITEDATA, fptr); //这是write_data的第四个参数值
	curl_easy_setopt(curl, CURLOPT_POST, 1); //设置问非0表示本次操作为post
	curl_easy_setopt(curl, CURLOPT_VERBOSE, 1); //打印调试信息
	//curl_easy_setopt(curl, CURLOPT_HEADER, 1); //将响应头信息和相应体一起传给write_data
	curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1); //设置为非0,响应头信息location
	//curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "/Users/zhu/CProjects/curlposttest.cookie");

	res = curl_easy_perform(curl);

	if (res != CURLE_OK)
	{
		switch (res)
		{
		case CURLE_UNSUPPORTED_PROTOCOL:
			fprintf(stderr, "不支持的协议,由URL的头部指定\n");
		case CURLE_COULDNT_CONNECT:
			fprintf(stderr, "不能连接到remote主机或者代理\n");
		case CURLE_HTTP_RETURNED_ERROR:
			fprintf(stderr, "http返回错误\n");
		case CURLE_READ_ERROR:
			fprintf(stderr, "读本地文件错误\n");
		default:
			fprintf(stderr, "返回值:%d\n", res);
		}
		return -1;
	}

	fclose(fptr);
	curl_easy_cleanup(curl);
}

网页原图https://www.remove.bg/example.jpg

返回:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值