Delphi - Image - Transparency u JPG

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Odpovědět
Závit
Začátečník
Začátečník
Uživatelský avatar
Registrován: 06. lis 2003
Bydliště: Jindřichův Hradec
Kontaktovat uživatele:

Delphi - Image - Transparency u JPG

Příspěvek od Závit »

Chtěl bych se zeptat, jestli je nějak možné nastavit transaparency u jpg obrázků vložených do komponenty image. Pokud tam dám BMP, je vše ok, bílé plochy zmizí, ale JPG je vůči transaparency imunní :(
Dá se s tím něco dělat? Popřípadě je možné tam nějak dostat průhledný GIF, díky.
bubanek
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 24. dub 2005
Bydliště: D1

Příspěvek od bubanek »

S Delphi sice moc zkušeností nemám,
ale JPG průsvitnej nikdy nebude....
jirik0
Nováček
Nováček
Registrován: 16. črc 2005
Bydliště: Kladno

Příspěvek od jirik0 »

Jednoduse to asi nepujde. Jak pisou v helpu
Transparent has no effect unless the Picture property specifies a TBitmap object.
Takze jedine prevest TJPEGImage na TBitmap.

V C++ Builderu by to mohlo byt treba takhle
TJPEGImage *i;
i = new TJPEGImage();
i->LoadFromFile("c:\\temp\\3\\img.jpg");
Graphics::TBitmap *b;
b = new Graphics::TBitmap();
b->Width = i->Width;
b->Height = i->Height;
b->Canvas->Draw(0,0,i);
b->TransparentColor = clBlack;
b->Transparent = true;
Image1->Canvas->Draw(0,0,i);
delete i;
delete b;
takze kdyz si to prepises do Delphi, tak by nemel byt problem.
Axis
Začátečník
Začátečník
Registrován: 14. kvě 2004

Příspěvek od Axis »

Transparenciu máš až od formátatu JPEG 2000, avšak neviem ako je to s podporu bitmapových editorov..
Radšej by som volil PNG24, poprípade PNG8 (neviem či má alpha kanál)...
Závit
Začátečník
Začátečník
Uživatelský avatar
Registrován: 06. lis 2003
Bydliště: Jindřichův Hradec
Kontaktovat uživatele:

Příspěvek od Závit »

bubanek píše:S Delphi sice moc zkušeností nemám,
ale JPG průsvitnej nikdy nebude....
a myslíš, že BMP jo? :lol:

jedna se o funkci delphi, komponenty Image - ktera zpruhledni ciste bile plochy (#FFFFFF), jedna se jen o zobrazeni, bohuzel jak rika jirik0, funguje to jen u bmp...

jirik0 - diky moc, ale ja v cecku neumim vubec nic, neznam operatory atd... kdybyste mi to nekdo napsal v object packalu byl bych moc rad, diky
jirik0
Nováček
Nováček
Registrován: 16. črc 2005
Bydliště: Kladno

Příspěvek od jirik0 »

Závit píše: jirik0 - diky moc, ale ja v cecku neumim vubec nic, neznam operatory atd... kdybyste mi to nekdo napsal v object packalu byl bych moc rad, diky
Takze v Delphi by to mohlo vypadat
var
b: Graphics.TBitmap;
i: TJPEGImage;
begin
i := TJPEGImage.Create;
i.LoadFromFile('C:\temp\3\img.jpg');
b :=Graphics.TBitmap.Create;
b.Width := i.Width;
b.Height := i.Height;
b.Canvas.Draw(0,0,i);
Image1.Canvas.Draw(0,0,b);
b.Destroy;
i.Destroy;
end;
a jeste musis do uses pridat jpeg
Závit
Začátečník
Začátečník
Uživatelský avatar
Registrován: 06. lis 2003
Bydliště: Jindřichův Hradec
Kontaktovat uživatele:

Příspěvek od Závit »

Jirik0 - ok, diky moc, takhle to funguje :wink:

btw uz sem pochopil, proc to puvodne udelali jen pro BMP :lol: , ale s tim si jeste pohraju :wink:
Odpovědět

Zpět na „Programování a web“