2014-11-09 6 views
2

Я пишу программу, в которой пользователь может ввести имя изображения, например «image.jpg». Я пытаюсь создать функцию, которая получает это изображение, и без обрезки ее, изменяет ее размеры таким образом, чтобы она соответствовала форме прямоугольника 470 x 410 пикселей. Может ли кто-нибудь узнать, как получить числовые значения размера изображения и/или изменить размер изображения так, чтобы он соответствовал этому прямоугольнику?Использование FLTK & C++: создание функции, которая соответствует изображению в пределах определенного фрейма

ответ

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. В принципе, код заменяет исходное изображение измененной копией, если она слишком большая.