![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите переписать с VCL на Api
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]Квота на гастарбайтеров снижена - успей воспользоваться.