Я пишу программу, в которой пользователь может ввести имя изображения, например «image.jpg». Я пытаюсь создать функцию, которая получает это изображение, и без обрезки ее, изменяет ее размеры таким образом, чтобы она соответствовала форме прямоугольника 470 x 410 пикселей. Может ли кто-нибудь узнать, как получить числовые значения размера изображения и/или изменить размер изображения так, чтобы он соответствовал этому прямоугольнику?Использование FLTK & C++: создание функции, которая соответствует изображению в пределах определенного фрейма
2
A
ответ
0
В документации FLTK есть пример программы: pixmap_browser.cpp. В моей системе Linux, я нашел его под /usr/share/doc/fltk-1.3.2/examples
Вот суть кода, который вы ищете:
#include <FL/Fl_Shared_Image.H>
// ...
// Load the image file:
Fl_Shared_Image *img = Fl_Shared_Image::get(filename);
// Or die:
if (!img) {
return;
}
// Resize the image if it's too big, by replacing it with a resized copy:
if (img->w() > box->w() || img->h() > box->h()) {
Fl_Image *temp;
if (img->w() > img->h()) {
temp = img->copy(box->w(), box->h() * img->h()/img->w());
} else {
temp = img->copy(box->w() * img->w()/img->h(), box->h());
}
img->release();
img = (Fl_Shared_Image *) temp;
}
Метод что делает изменение размера Fl_Image::copy. В принципе, код заменяет исходное изображение измененной копией, если она слишком большая.