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

Вниз

Использование графики в формате 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.041 c
1-1093895320
bloodman
2004-08-30 23:48
2004.09.12
почему на этих строчках вылезает АV ??


14-1093350435
Sir John
2004-08-24 16:27
2004.09.12
Продам принтер


6-1089184441
RagE
2004-07-07 11:14
2004.09.12
Вопрос по TServerSocket, TClientSocket


1-1093581154
Sollo
2004-08-27 08:32
2004.09.12
Подсветка Begin End


4-1090070812
BVV
2004-07-17 17:26
2004.09.12
Управление чюжим приложением