Nếu bạn quyết định sử dụng phương pháp tối thiểu, không có phụ thuộc libpng/libjpeg, tôi khuyên bạn nên sử dụng stb_image
và stb_image_write
, được tìm thấy here.
Nó đơn giản như vậy, bạn chỉ cần đặt các tệp tiêu đề stb_image.h
và stb_image_write.h
trong thư mục của mình.
Dưới đây là đoạn code mà bạn cần phải đọc hình ảnh:
#include <stdint.h>
#define STB_IMAGE_IMPLEMENTATION
#include "stb_image.h"
int main() {
int width, height, bpp;
uint8_t* rgb_image = stbi_load("image.png", &width, &height, &bpp, 3);
stbi_image_free(rgb_image);
return 0;
}
Và đây là đoạn code để viết một hình ảnh:
#include <stdint.h>
#define STB_IMAGE_WRITE_IMPLEMENTATION
#include "stb_image_write.h"
#define CHANNEL_NUM 3
int main() {
int width = 800;
int height = 800;
uint8_t* rgb_image;
rgb_image = malloc(width*height*CHANNEL_NUM);
// Write your code to populate rgb_image here
stbi_write_png("image.png", width, height, CHANNEL_NUM, rgb_image, width*CHANNEL_NUM);
return 0;
}
Bạn có thể biên dịch mà không cờ hoặc phụ thuộc:
g++ main.cpp
Các lựa chọn thay thế nhẹ khác bao gồm:
Nguồn
2016-11-25 22:31:39
là tài liệu cho libjpeg (http://www.ijg.org/) hoặc bất cứ điều gì có nguồn gốc API bạn có đủ ? – greyfade
Đừng quên chọn câu trả lời đúng cho ba câu hỏi bạn đã hỏi. – mwcz