Autor Téma: zmensenie velkosti obrazka  (Přečteno 1108 krát)

Offline dee

  • Plnoletý
  • ***
  • Příspěvků: 124
  • Karma: 1
    • Verze Delphi: D7, XE7
zmensenie velkosti obrazka
« kdy: 07-09-2016, 11:42:57 »
zdar,

riesim taky problem, do TBitmap si natiahnem zo suboru obrazok ktory si zvoli uzivatel, problem je ze dnes aj foto z telefonu moze mat 2MB co je pomerne vela, potreboval by som pred dalsim spracovaním (v mojom prípade ulozenim do db) zmensit velkost tohto obrazka. Ci uz nejako znizit bitrate, kompresiou, zmensenim rozmerov (samozrejme aby sa proporcie zachovali).

Z poklesom kvality samozrejme pocitam, idealne by to bolo mat riesene nejako pomerovo, povedzme male obrazky do par desiatok kB by sa nekomprimovali vobec alebo minimalne a samozrejme cim vacsi obrazok tym by bol stupen kompresiie vyssi.

Viete mi odporucit nejake vhodne riesenie problemu ? Ide o obrazky typu jpg a png, pouzivam XE7. niejaka funkcionalita ohladom tohoto by tam uz mohla byt implementovana ;)

dik :)

Offline JaroB

  • Guru
  • *****
  • Příspěvků: 1066
  • Karma: 29
    • Verze Delphi: XE8, Sydney
Re:zmensenie velkosti obrazka
« Odpověď #1 kdy: 07-09-2016, 12:56:38 »
Lze zkusit něco odsud http://torry.net/pages.php?id=344, třeba "Resize image without Aliasing v.1.0" anebo hotové řešení pro viewer "WDS Picture Resize v.0.6.1" z http://torry.net/pages.php?id=1261. Jsou i další možnosti např. DIB.pas s příklady z knihovny (un)DelphiX viz http://www.micrel.cz/Dx/download/delphix_all_in_one_17.rar... Možností je víc  ;)

Offline JaroB

  • Guru
  • *****
  • Příspěvků: 1066
  • Karma: 29
    • Verze Delphi: XE8, Sydney
Re:zmensenie velkosti obrazka
« Odpověď #2 kdy: 07-09-2016, 14:37:42 »

Offline dee

  • Plnoletý
  • ***
  • Příspěvků: 124
  • Karma: 1
    • Verze Delphi: D7, XE7
Re:zmensenie velkosti obrazka
« Odpověď #3 kdy: 07-09-2016, 15:35:21 »
no jo ... niekedy je riesenie skutocne jednoduche nakoniec  som to vyriesil takto ... inak funguje to s FMX Image

Kód: Delphi [Vybrat]
  1. image1.Bitmap.LoadFromFile('C:\f\1.jpg');
  2. if image1.Bitmap.Width > image1.Bitmap.Height then image1.Bitmap.Resize(640,480) else image1.Bitmap.Resize(480,640);
  3.  
  4. image1.Bitmap.SaveToFile('C:\f\1com.jpg');
  5.  


prekvapivo tieto dve riesenia nefunguju, a ulozia len cierny obrazok prislusnej velkosti
Kód: Delphi [Vybrat]
  1. image1.Bitmap.LoadFromFile('C:\f\1.jpg');
  2. image1.Bitmap.Width:=100;
  3. image1.Bitmap.Height:=100;
  4. image1.Bitmap.SaveToFile('C:\f\1com.jpg');
  5.  

Kód: Delphi [Vybrat]
  1. image1.Bitmap.LoadFromFile('C:\f\1.jpg');
  2. image1.Bitmap.SetSize(100,100);
  3.  

Offline JaroB

  • Guru
  • *****
  • Příspěvků: 1066
  • Karma: 29
    • Verze Delphi: XE8, Sydney
Re:zmensenie velkosti obrazka
« Odpověď #4 kdy: 09-09-2016, 19:30:27 »
Sorry, nepoznal jsem, že je to FMX

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6166
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:zmensenie velkosti obrazka
« Odpověď #5 kdy: 09-09-2016, 19:46:13 »
To je tak, keď nemáš krištáľovú guľu ;)
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.