Форум: "Основная";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];
ВнизИспользование графики в формате Jpeg в CLX Найти похожие ветки
← →
Mim1 © (2004-08-27 13:24) [0]Не получется отобразить картинку jpeg в CLX приложении. Судя посему TJPEGImage в своих предках использует VCLные классы из модуля GRAPHICS а не CLXные из QGRAPHICS. :(
Кто нибудь знает любой способ отображения JPEG"а в CLX?
подскажите пожалуйста
← →
MIm1 © (2004-08-27 13:31) [1]Подскажите хотябы преобразования jpeg в bmp во премя выполнения программы. :)
← →
Анонимщик © (2004-08-27 16:54) [2]Не буду комментировать первую часть вопроса, ты бы поосторожнее выражался, если не в курсе. Не знаю и почему у тебя ничего не получается, код бы привел, что ли.
А jpeg в bmp переводится так:
var
BMP : TBitmap;
jpeg: TJpegImage;
begin
...
BMP.Assign(jpeg);
← →
Mim1 © (2004-08-27 17:32) [3]
> Не буду комментировать первую часть вопроса, ты бы поосторожнее
> выражался, если не в курсе
Не у круто, что бы я без тебя делал. Я в этом уверен на 90 процентов. Тем более я говорю "судя по всему", куда уж тут осторожнее.
> код бы привел, что ли.
1) new -> clx application
2) положите картинку с палитры копонент на форму , проверте что в uses qgraphics
2) Image1.picture.loadfromfile("");
Фсе.
> var
> BMP : TBitmap;
> jpeg: TJpegImage;
> begin
> ...
>
> BMP.Assign(jpeg);
Я даже знаю результат, "can"t assign" потому что TBitmap из Greaphics <> TBitmap из QGreaphics.
Не ну супер мегарулез, я кажется дал достаточно инфы, сукдя по этому коду в конкретном случае вы знаете меньше меня. Хотя бы попробывали прежде чем отвечать.
Тем не менее решение нашел, дело в том что под линуксом jpg работает отлично, а вот в Windows почемуто не поддерживается{$IFDEF LINUX}
.
Add("jpg", SVJpegs, 0, TBitmap);
{$ENDIF}
Вышел из ситуации я подключением библиотечки с windows загрузкой bmp в mswindows и использованием стандартного функционала под linux.
Вот библиотечка.library w32jpeg;
uses
SysUtils,
Classes,
Graphics,
Jpeg;
{$R *.res}
Function Bmp2Jpg(bmp,jpg:TStream):boolean;
var b:TBitmap;
j:TJPEGImage;
begin
result := true;
try
b := TBitmap.Create;
try
b.LoadFromStream(bmp);
j :=TJPEGImage.Create;
try
j.Assign(b);
j.SaveToStream(jpg);
finally
j.Free;
end;
finally
b.Free;
end;
except
Result := false;
end;
end;
Function Jpg2Bmp(jpg,bmp:TStream):boolean;
var b:TBitmap;
j:TJPEGImage;
begin
result := true;
try
j :=TJPEGImage.Create;
try
j.LoadFromStream(jpg);
b := TBitmap.Create;
try
b.Assign(j);
b.SaveToStream(bmp);
finally
b.Free;
end;
finally
j.Free;
end;
except
Result := false;
end;
end;
exports Bmp2Jpg, Jpg2Bmp;
end.{$IFDEF MSWINDOWS}
Function Jpg2Bmp(jpg,bmp:TStream):boolean; external "w32jpeg.dll";
Function Bmp2Jpg(bmp,jpg:TStream):boolean; external "w32jpeg.dll";
{$ENDIF}
ms := TMemoryStream.Create;
try
BinaryToStream(s,ms);
ms.Position := 0;
{$IF Defined(MSWINDOWS)}
ms1 := TMemoryStream.Create;
try
if Jpg2Bmp(ms,ms1) then
begin
ms1.Position := 0;
Image1.Picture.LoadFromStream(ms1);
end;
finally
ms1.Free;
end;
{$ELSEIF Defined(LINUX)}
if Image1.Picture.Graphic = nil then
Image1.Picture.Graphic := TBitmap.create;
Image1.Picture.Graphic.LoadFromStream(ms);
{$IFEND}
finally
ms.Free;
end;
end;
← →
Mim1 © (2004-08-27 19:10) [4]Забыл сказать, программу и dll компилять с пакетом rtl70.bpl иначе будут проблеммы с необщим диспетчером памяти и использованием TStream.
> [2] Анонимщик © (27.08.04 16:54)
Если вы не поняли, jpeg в clx не поддерживается так что код (того что не существует) привести не могу.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.041 c