Image 확장
Loading and Saving
이미지 파일을 저장하고 다시 불러옵니다.
파일로 이어지는 Image
save_image(image, file_name)은 Image를 파일로 저장하고, load_image(file_name)은 파일에서 Image를 읽습니다. PNG, JPEG 등 실제 지원 형식은 설치된 Qt image plugin에 따라 달라집니다.
먼저 실행해 보세요
예제 · example1.cpp
#include <small/image.h>
void small_main()
{
Image made(200, 120, Cyan);
for (int y = 30; y < 90; y++)
for (int x = 40; x < 160; x++)
made.set_pixel(x, y, Magenta);
save_image(made, "small_image_test.png");
Image loaded = load_image("small_image_test.png");
print("Loaded: ", loaded.width(), " x ", loaded.height());
Window window;
window.open(500, 300);
while (window.is_open())
{
window.clear(Black);
draw_image(window, loaded, 150, 80);
window.show();
}
}
파일 이름이 format을 결정합니다
save_image(image, "picture.png")처럼 확장자를 쓰면 저장 형식을 정할 수 있습니다. 파일을 열 수 없거나 저장할 수 없으면 Small은 runtime error로 알려줍니다.
불러온 이미지의 alpha 정보는 draw_image에서 그대로 합성됩니다.
한 단계 더
예제 · example2.cpp
#include <small/image.h>
void small_main()
{
Image image(120, 80, Yellow);
save_image(image, "picture.png");
Image copy = load_image("picture.png");
print(copy.width(), " x ", copy.height());
}
이제 Image의 기본 흐름이 완성되었습니다
create/load → inspect/edit pixels → draw → save가 모두 가능합니다. 이 기능들은 Small IDE 밖에서도 평범한 C++ library API로 사용할 수 있도록 설계되어 있습니다.
Exercise — 저장 후 읽기
50×50 Cyan 이미지를 cyan.png로 저장하고 새 Image로 다시 읽으세요.
연습 문제 코드 · exercise1_starter.cpp
#include <small/image.h>
void small_main()
{
Image image(50, 50, Cyan);
// Save and load.
}
Hint
Image loaded = load_image("cyan.png");를 사용할 수 있습니다.
풀이 보기
#include <small/image.h>
void small_main()
{
Image image(50, 50, Cyan);
save_image(image, "cyan.png");
Image loaded = load_image("cyan.png");
print(loaded.width(), " x ", loaded.height());
}
Exercise — 파일 수정
이미지를 만들고 저장한 뒤 다시 읽어서 (0,0)을 Magenta로 바꾸고 다른 이름으로 저장하세요.
연습 문제 코드 · exercise2_starter.cpp
#include <small/image.h>
void small_main()
{
Image image(20, 20, White);
save_image(image, "original.png");
// Load, change one pixel, and save as changed.png.
}
Hint
두 번째 저장 이름을 사용하면 원본 파일은 유지됩니다.
풀이 보기
#include <small/image.h>
void small_main()
{
Image image(20, 20, White);
save_image(image, "original.png");
Image changed = load_image("original.png");
changed.set_pixel(0, 0, Magenta);
save_image(changed, "changed.png");
}
완성한 프로그램 공유하기
작은 걸음 VII — 프로그램 공유하기에서 Windows 배포본을 만드는 방법을 배울 수 있습니다. 프로그램이 불러오는 그림 파일은 Add Files로 함께 넣고, 폴더 전체를 ZIP으로 보내세요.