
A mellékelt példaprogram megnyitása előtt a SubImagePackage.pas-ban levő komponenst telepítenie kell a Delphi alá.
A Delphi 6-os verziójától kezdődően a Package állományban tennünk kell egy módosítást. A Requires feliraton kattintsunk az egér jobb gombjával. A megjelenő menüben válasszuk az Add menüpontot. Megnyílik egy újabb ablak, ahol lehetőségünk van állományokat tallózni. Keressük meg a Delphi Lib alkönyvtárában található DesignIDE.dcp állományt, majd adjuk hozzá a Package állományhoz. A Package állományt csak ez után telepítsük.
A komponens SourceDir és DestinationDir property-jeiben állíthatjuk be a forrás- és a célmappákat.
A kivágás területét egy keret formájában adhatjuk meg az ILeft (X koordináta), ITop (Y koordináta), IWidth (szélesség) és IHeight (magasság) property-ken keresztül.
Az Execute metódus meghívására a komponens végignézi a forráskönyvtár tartalmát és feldolgozza az abban található összes BMP és JPG állományt.
Az Execute metódust szerkesztési időben is meghívhatjuk, ha a komponens felett az egér jobb oldali gombjának megnyomásával egy helyi menüt kérünk.
A komponenst a TComponent osztályból származtatjuk.
A komponens működésének lényege az Execute metódusban található.
A SourceDir property-ben megadott könyvtárban képeket kell keresnünk.
A FindFirst – FindNext utasításpáros használatával a könyvtár összes bejegyzését megvizsgálhatjuk.
Az első keresést a FindFirst utasítással kell elvégeznünk.
if FindFirst(FSourceDir+'*.*',faAnyFile,F)=0 then begin
Az összes többi bejegyzés megkeresésére egy repeat – until blokkot használhatunk, a végén a FindNext utasítással.
A keresést végül a FindClose utasítás zárja le.
Egy megtalált bejegyzéssel csak akkor foglalkozunk, ha az egy állomány, amely BMP vagy JPG kiterjesztéssel rendelkezik.
A BMP és JPG állományok között feldolgozás szempontjából különbséget kell tennünk.
Kép kivágása BMP-ből
if (LowerCase(ExtractFileExt(F.Name))='.bmp') then begin
A BMP-k kezelését a TBitmap osztály segítségével végezhetjük el.
A megtalált állományt betöltjük egy TBitmap objektumba.
bmp1.LoadFromFile(FSourceDir+F.Name);
Létrehozunk egy újabb objektumot, amelynek beállítjuk a méreteit.
bmp2.Width:=IWidth;
bmp2.Height:=IHeight;
A bmp1 objektum megadott téglalappal lefedett tartalmát a StretchBlt függvény segítségével másolhatjuk át a bmp2-be.
StretchBlt(bmp2.Canvas.Handle,0,0,IWidth,IHeight,bmp1.Canvas.Handle,ILeft,ITop,IWidth,IHeight,SRCCOPY);
Végül nem marad más hátra, minthogy a bmp2 tartalmát lemezre mentsük.
Kép kivágása JPG-ből
A JPG képek kezelésére a JPEG unit-ban található TJPEGImage osztály szolgál. Ebben az esetben is ugyanúgy járunk el, mint a BMP képek esetében, csak a művelet előtt végre kell hajtanunk egy JPG -> BMP konverziót, a végén pedig a BMP képet vissza kell alakítanunk JPG formátumba.
A JPG kép betöltésére és konvertálására az alábbi két utasítást használhatjuk.
jpg.LoadFromFile(FSourceDir+F.Name);
bmp1.Assign(jpg);
Ehhez hasonló a visszaalakítás és mentés.
jpg.Assign(bmp2);
jpg.SaveToFile(FDestinationDir+F.Name);