C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Bitmap image is not valid  (Прочитано 7868 раз)
SilverFish
Участник


Сказали спасибо: +14/-6
Offline

Сообщений: 786


« : 20 Сентябрь 2013, 09:54:25 »

Из фотошопа сохранен файл. Весь код:
Код:
#include
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 String Path = ExtractFilePath(Application->ExeName);
 Path = Path + "images\\map1.jpg";
 Image1->Picture->Bitmap->LoadFromFile(Path);
}

Ошибка Bitmap image is not valid
Что с этим файлом не так? Файл прилагается. С какими опциями сохранять JPG для TImage?
картинка
Записан
POV
Участник


Сказали спасибо: +107/-7
Offline

Сообщений: 640


« Ответ #1 : 20 Сентябрь 2013, 10:49:16 »

Use LoadFromFile to read a picture from disk. The TGraphic class created is determined by the file extension of the file. If the file extension is not recognized an EInvalidGraphic exception is raised.

Значица не распознает автоматом не битмапы.

вот тут тоже только про битмапы
TPicture is a TGraphic container, used to hold a graphic, the type of which is specified in the Graphic property. It is used in place of a TGraphic if the graphic can be of any TGraphic class. LoadFromFile and SaveToFile are polymorphic. For example, if the TPicture is holding an Icon, it is valid to LoadFromFile a bitmap file, where the class TIcon can only read .ICO files.
Записан
SilverFish
Участник


Сказали спасибо: +14/-6
Offline

Сообщений: 786


« Ответ #2 : 20 Сентябрь 2013, 11:11:55 »

Так что я должна сделать?
Если так:
Image1->Picture->Graphic->LoadFromFile(Path);
то
raised exception class $C0000005 with message 'access violation at 0x00402fca: read of address 0x00000000'.
Записан
POV
Участник


Сказали спасибо: +107/-7
Offline

Сообщений: 640


« Ответ #3 : 20 Сентябрь 2013, 11:14:41 »

Да скорее всего жипег так не загрузишь.. видимо надо использовать что-то из jpeg.hpp и генерить битмам, который уже переносить в Image1
Записан
SilverFish
Участник


Сказали спасибо: +14/-6
Offline

Сообщений: 786


« Ответ #4 : 20 Сентябрь 2013, 11:43:19 »

Спасибо, так работает -
Код
#include 
#include
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
String Path = ExtractFilePath(Application->ExeName);
Path = Path + "images\\map1.jpg";
std::auto_ptr<TJPEGImage> JPG(new TJPEGImage);
JPG->LoadFromFile(Path);
Image1->Picture->Bitmap->Assign(JPG.get());
}
 

Мне казалось что достаточно только строки:
#include
а не городить целый огород...
Записан
volvo877
Глобальный модератор


Сказали спасибо: +736/-1
Offline

Сообщений: 891


« Ответ #5 : 20 Сентябрь 2013, 12:04:55 »

Мне казалось что достаточно только строки:
#include
а не городить целый огород...
Если грузить JPEG-изображение в Picture, а не в Bitmap (что, как бы намекает, что там должен быть именно битмап), то достаточно:

Код
Image1->Picture->LoadFromFile(Path);
Записан
SilverFish
Участник


Сказали спасибо: +14/-6
Offline

Сообщений: 786


« Ответ #6 : 20 Сентябрь 2013, 12:11:21 »

Мне казалось что достаточно только строки:
#include
а не городить целый огород...
Если грузить JPEG-изображение в Picture, а не в Bitmap (что, как бы намекает, что там должен быть именно битмап), то достаточно:

Код
Image1->Picture->LoadFromFile(Path);

 
Работает.
Записан
POV
Участник


Сказали спасибо: +107/-7
Offline

Сообщений: 640


« Ответ #7 : 20 Сентябрь 2013, 12:24:37 »

Мне казалось что достаточно только строки:
#include
а не городить целый огород...
Если грузить JPEG-изображение в Picture, а не в Bitmap (что, как бы намекает, что там должен быть именно битмап), то достаточно:

Код
Image1->Picture->LoadFromFile(Path);

Я вот только щас так сделал - не работает. 2007 билдер. Битмапы грузит, а жипег нет.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  




....

Powered by SMF 1.1.21 | SMF © 2025, Simple Machines
Страница сгенерирована за 0.449 секунд. Запросов: 21.