Форум: "Прочее";
Текущий архив: 2014.05.18;
Скачать: [xml.tar.bz2];
ВнизКак определить что в 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.002 c