色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c 把圖片寫進json

李中冰1年前8瀏覽0評論

在項目中,我們有時候需要把圖片的二進制數據存放到json文件中,這時候你就需要使用C語言來實現這個功能。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
char *data;
size_t size;
} Image;
int main()
{
FILE *fp = fopen("example.jpg", "rb"); // 打開二進制文件
if (fp == NULL) return -1; // 打開失敗
fseek(fp, 0, SEEK_END); // 定位到文件末尾
size_t file_size = ftell(fp); // 獲取文件大小
fseek(fp, 0, SEEK_SET); // 定位到文件開頭
Image *image = (Image *) malloc(sizeof(Image)); // 分配內存
image->data = (char *) malloc(file_size + 1);
if (fread(image->data, file_size, 1, fp) != 1) { // 讀取文件
free(image->data);
free(image);
fclose(fp);
return -1;
}
fclose(fp);
image->size = file_size;
// 把圖片數據寫進json
FILE *json_fp = fopen("example.json", "w"); // 打開文件
if (json_fp == NULL) {
free(image->data);
free(image);
return -1;
}
fprintf(json_fp, "{\n");
fprintf(json_fp, "  \"data\": \"");
for (size_t i = 0; i< image->size; i++) {
fprintf(json_fp, "\\u%02X", image->data[i]); // 將圖片數據轉換為Unicode碼
}
fprintf(json_fp, "\",\n");
fprintf(json_fp, "  \"size\": %d\n", image->size);
fprintf(json_fp, "}\n");
fclose(json_fp);
free(image->data);
free(image);
return 0;
}

以上是使用C語言實現把圖片寫進json的方法,其中我們使用了fread函數讀取文件中的二進制數據,并同時使用Unicode碼將其轉換到json文件中。