Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2014.05.18;
Скачать: CL | DM;

Вниз

Как определить что в TImage?   Найти похожие ветки 

 
L8   (2013-11-12 16:24) [0]

Есть функция, которая принимает TBitmap.
Передаю Image1.Picture.Bitmap.

Если в TImage JPEG, то произойдет ошибка.

Как определить что в TImage?
Или как универсально получить из Image1.Picture.Bitmap TBitmap?


 
брат Птибурдукова   (2013-11-12 16:35) [1]

Image.Picture.Graphic.LoadFromFile/Image.Picture.Graphic.Draw не подойдёт?


 
antonn ©   (2013-11-12 16:38) [2]


> Image.Picture.Graphic.LoadFromFile/Image.Picture.Graphic.
> Draw не подойдёт?

если потом будет Image.canvas.lineto() то с jpeg все сдохнет


 
Sapersky   (2013-11-12 16:43) [3]


Var b: TBitmap;
   SrcIsBmp : Boolean;
begin
SrcIsBmp := (Image1.Picture.Graphic is TBitmap);
If SrcIsBmp then b := Image1.Picture.Bitmap else begin
 // for cases when TImage contains Jpeg etc. - force unpacking
 b := TBitmap.Create;
 b.Assign(Image1.Picture.Graphic);
end;

<...>

If (not SrcIsBmp) then b.Free;
end;

Впрочем, чтобы не путаться можно всегда делать b := TBitmap.Create/b.Assign - если в Image битмап, он не должен копироваться, там счётчик ссылок.


 
Ega23 ©   (2013-11-12 16:48) [4]


> если потом будет Image.canvas.lineto() то с jpeg все сдохнет


А разве так можно? Ну, в смысле, разве это целевое использование TImage?
Мне всегда казалось, что для таких дел TPaintBox существует.
И, эта...   Image.Picture.Bitmap.Canvas.LineTo, ЕМНИП.


 
L8   (2013-11-12 17:28) [5]

> Sapersky   (12.11.13 16:43) [3]


SrcIsBmp := (Image1.Picture.Graphic is TBitmap);


Эта проверка всегда возвращает True.
У мне там JPEG загружен и та функция, которой надо TBitmap, выводит по прежнему ошибку.


 
Sapersky   (2013-11-12 21:02) [6]

Как загружаешь?
Может, проблема не в jpeg вообще. Пересохрани эту же картинку как bmp и попробуй.


 
Dimka Maslov ©   (2013-11-12 21:04) [7]

Конвертировать JPEG в Bitmap, а потом заливать в TImage?


 
antonn ©   (2013-11-12 21:28) [8]


> А разве так можно? Ну, в смысле, разве это целевое использование
> TImage?
> Мне всегда казалось, что для таких дел TPaintBox существует.
>
> И, эта...   Image.Picture.Bitmap.Canvas.LineTo, ЕМНИП.

почему нет? готовая буферизация, для частой перерисовки не особо годится, но какой нибудь индикатор рисовать можно
Image.Picture.Bitmap будет при bmp, с jpeg наверное AV выскочит (лень проверять сейчас)


 
antonn ©   (2013-11-12 21:32) [9]


> Image.Picture.Bitmap будет при bmp, с jpeg наверное AV выскочит
> (лень проверять сейчас)

да и image.canvas будет с bmp на битмапе рисовать, проверять тоже лень :)


 
L8   (2013-11-12 21:34) [10]


> Sapersky   (12.11.13 21:02) [6]
>
> Как загружаешь?


Через инспектор, в дизайне.


> Dimka Maslov ©   (12.11.13 21:04) [7]
>
> Конвертировать JPEG в Bitmap, а потом заливать в TImage?
>


Нет. Мне нужно из TImage получить изображение и конвертировать в TBitmap.


 
Dimka Maslov ©   (2013-11-12 22:11) [11]


> Нет. Мне нужно из TImage получить изображение и конвертировать
> в TBitmap.


В TImage изображение откуда берётся? Оно откуда-то таки загружается. Так вот делаем этот процесс загрузки многоступенчатым - сначала делаем TBitmap, потом загружаем в TImage, потом - хоть куда. И делаем это не в дизайне, а восстанавливаем из ресурсов где-нибудь в OnCreate


 
Sapersky   (2013-11-12 22:28) [12]


> Через инспектор, в дизайне.

У меня работает при загрузке через инспектор. Даже битые jpeg грузит. Попробуй сам в отдельном тестовом проекте.


 
antonn ©   (2013-11-13 08:16) [13]

если jpeg будет высотой 1 пиксель - все сдохнет, в модуле jpeg какой-то версии было явно прописано scanline[0] и scanline[1]


 
L8   (2013-11-13 10:57) [14]


> Sapersky   (12.11.13 22:28) [12]
>
>
> > Через инспектор, в дизайне.
>
> У меня работает при загрузке через инспектор. Даже битые
> jpeg грузит. Попробуй сам в отдельном тестовом проекте.


И у меня загружает.
Но проверка (Image1.Picture.Graphic is TBitmap), говорит что там битмап, а не JPEG.


 
Sapersky   (2013-11-13 12:57) [15]

В смысле, у меня и проверка работает, и Assign.

> antonn ©   (12.11.13 16:38) [2]
> antonn ©   (13.11.13 08:16) [13]


Ну да, в конце все так или иначе сдохнут. Но те, кто не использует TImage и стандартный модуль jpeg - будут жить вечно :)


 
antonn ©   (2013-11-13 14:23) [16]


> Ну да, в конце все так или иначе сдохнут. Но те, кто не
> использует TImage и стандартный модуль jpeg - будут жить
> вечно :)

ну я юзал стандартный  jpeg для перегона в битмап, пока не попалась такая тонкая картинка


 
L8   (2013-11-13 19:19) [17]

Всем спасибо,
вопрос больше не актуален.



Страницы: 1 вся ветка

Текущий архив: 2014.05.18;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.006 c
2-1374915886
blackmane
2013-07-27 13:04
2014.05.18
Вывод формы в активный сеанс


15-1384356169
L8
2013-11-13 19:22
2014.05.18
Быстро закрасить кусок памяти


15-1383152239
Rouse_
2013-10-30 20:57
2014.05.18
Требуется небольшая вычитка статьи.


3-1298286689
wasja_1
2011-02-21 14:11
2014.05.18
Замена данных в DBEdit


2-1375298545
Novice
2013-07-31 23:22
2014.05.18
Изменить цвет выделения строки ListView