在項目中,我們有時候需要把圖片的二進制數據存放到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文件中。
上一篇vue中的插槽
下一篇python 的等待時間