C JSON 是一種輕量級的數據交換格式,支持各種語言之間的數據交互。它被廣泛應用于 HTTP 請求和響應中,也可以用來傳輸各種類型的數據,包括照片。
在使用 C JSON 傳送照片時,我們可以先將照片轉換成 base64 編碼的字符串,然后將字符串作為 JSON 數據的值傳輸。以下是一個示例程序:
#include <stdio.h> #include <json-c/json.h> int main() { FILE *fp; char img_buffer[1024*1024]; size_t img_size; char *base64_img; int base64_length; // 讀取照片文件 fp = fopen("photo.jpg", "rb"); img_size = fread(img_buffer, 1, sizeof(img_buffer), fp); fclose(fp); // 轉換為 base64 編碼 base64_img = base64_encode((const unsigned char*)img_buffer, img_size); base64_length = strlen(base64_img); // 創建 JSON 對象 struct json_object *json_data = json_object_new_object(); json_object_object_add(json_data, "photo", json_object_new_string(base64_img)); // 輸出 JSON 數據 printf("%s\n", json_object_to_json_string(json_data)); // 釋放內存 json_object_put(json_data); free(base64_img); return 0; }
在這個程序中,我們首先讀取了一個名為 "photo.jpg" 的照片文件,并將其存儲在一個緩沖區中。然后,我們使用 base64_encode 函數將緩沖區中的數據轉換成 base64 編碼的字符串,并計算出字符串的長度。
接下來,我們創建了一個名為 "json_data" 的 JSON 對象,并將 base64 編碼的字符串作為值添加到該對象中。最后,我們輸出了 JSON 數據并釋放了所有分配的內存。
在發送端,我們可以使用類似的方法將 JSON 數據發送到服務器。在接收端,我們可以使用 JSON 解析庫從接收到的數據中提取出照片的 base64 編碼字符串,并將其還原為二進制數據以顯示照片。