Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите переписать с VCL на Api


Страницы:   1 2

M.A. ©   (2014-11-05 19:52:00) 

Помогите переписать с VCL на Api.
Требуется отобразить на Static и естественно---- не знаю как!!!
В VCL использовал так:
  getPicture(Image1.Picture.Bitmap, TagMy); С помощью TImage.

Вот часть кода.


function PictureMimeValide(mime: string):boolean;
begin
 result:=(pos('jpeg',lowerCase(mime))>0) or (pos('jpg',lowerCase(mime))>0) {$IFDEF UNICODE} or (pos('png',lowerCase(mime))>0) {$ENDIF};
end;

function TTagForm.AUDIOPictureExtract(var img: TMemorystream; Tagis : TAudioGenie3): string;
var
 size: integer;
begin
 result:='none';
 if (Tagis.AUDIOAnalyzeFileW(Tagis.AUDIOLastFileW) in [MPEG,FLAC,WMA, MP4M4A]) or ((Tagis.ID3V2ExistsW)) then
   begin
    img:=TMemorystream.Create;
     case Tagis.AUDIOAnalyzeFileW(Tagis.AUDIOLastFileW) of
       MPEG:
         begin
           result:=lowerCase(Tagis.ID3V2GetPictureMimeW(1));
           size:=Tagis.ID3V2GetPictureSizeW(1);
           if (size>0) and BassPictureMimeValide(result) then
             begin
               img.SetSize(size);
               Tagis.ID3V2GetPictureArrayW(img.Memory,size,1);
             end
           else
             begin
               img.Free;
               result:='none';
             end;
         end;
       FLAC:
         begin
           result:=lowerCase(Tagis.FLACGetPictureMimeW(1));
           size:=Tagis.FLACGetPictureSizeW(1);
           if (size>0) and BassPictureMimeValide(result) then
             begin
               img.SetSize(size);
               Tagis.FLACGetPictureArrayW(img.Memory,size,1);
             end
           else
             begin
               img.Free;
               result:='none';
             end;
         end;
       WMA:
         begin
           result:=lowerCase(Tagis.WMAGetPictureMimeW(1));
           size:=Tagis.WMAGetPictureSizeW(1);
           if (size>0) and BassPictureMimeValide(result) then
             begin
               img.SetSize(size);
               Tagis.WMAGetPictureArrayW(img.Memory,size,1);
             end
           else
             begin
               img.Free;
               result:='none';
             end;
         end;
       MP4M4A:
         begin
           result:=lowerCase(Tagis.MP4GetPictureMimeW(1));
           size:={TagMy}Tagis.MP4GetPictureSizeW(1);
           if (size>0) and BassPictureMimeValide(result) then
             begin
               img.SetSize(size);
               Tagis.MP4GetPictureArrayW(img.Memory,size,1);
             end
           else
             begin
               img.Free;
               result:='none';
             end;
         end;
     end;
   end;
end;

function getPicture(bitmap: TBitMap; Tagis : TAudioGenie3): boolean;
var
 m: string;
 img: TMemorystream;
 j: TJPEGImage;
 {$IFDEF UNICODE}
 p: TPngImage;
 {$ENDIF}
begin
   result:=false;
   m:=AUDIOPictureExtract(img, Tagis);
   if BassPictureMimeValide(m) then begin
     if (pos('jpeg',m)>0) or (pos('jpg',m)>0) then begin
        // jpeg
       j:=TJPEGImage.Create;
       try
         j.LoadFromStream(img);
         j.DIBNeeded;
         Bitmap.Assign(j);
         result:=true;
       finally
         img.free;
         j.Free;
       end;
       exit;
     end
     {$IFDEF UNICODE}
     else if pos('png',m)>0 then begin
       // png
       p:=TPngImage.Create;
       try
         p.LoadFromStream(img);
         Bitmap.Assign(p);
         result:=true;
       finally
         img.free;
         p.Free;
       end;
       exit;
     end
     {$ENDIF}
     else img.free;
  end; // end if valide
end;


M.A.   (2014-11-05 20:29:00) [21]

:-) Нет. Пытаюсь переписать проект на API для практики и уменьшения веса сборки. Хотелось бы узнать, как можно с минмальным использованием доп.модулей извлекать изображение из песенок.


Rouse_   (2014-11-05 20:21:00) [22]


> M.A.   (05.11.14 20:13) [4]
> Но в этом коде исользуется Graphic, а как без него?

Не понял, т.е. с TJPEGImage и TPngImage у тебя уже получилось и вся проблема с TBitMap?


M.A.   (2014-11-05 20:13:00) [23]

Но в этом коде исользуется Graphic, а как без него? В этом вся загвоздка:
bitmap: TBitMap;
Bitmap.Assign(j);


Rouse_   (2014-11-05 20:05:00) [24]


> Требуется отобразить на Static и естественно---- не знаю
> как!!!

Static - это обычное окно, у которого есть свое DC, оть все что ты это написал и выводи в WM_PAINT окна с классом Static.


M.A.   (2014-11-05 19:59:00) [25]


> Jeer ©   (05.11.14 19:57) [1]
> Квота на гастарбайтеров снижена - успей воспользоваться.
>

Что простите?


Jeer   (2014-11-05 19:57:00) [26]

Квота на гастарбайтеров снижена - успей воспользоваться.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо