![]() |
bild zerschneiden
hallo will ein bild ein 16 einzelteile schneiden und abspeichern auf der festplatte
Delphi-Quellcode:
dies ist die erste zeile für die ersten 4 pics oben !
procedure TForm1.Button1Click(Sender: TObject);
var Quelle, Ziel: TBitmap; X, Y: integer; begin Quelle := TBitmap.Create; try Ziel := TBitmap.Create; try Quelle.LoadFromFile('beispielbild.bmp'); Ziel.Width := Quelle.Width div 4; Ziel.Height := Quelle.Height div 4; X := 0; Y := 0; Ziel.Canvas.CopyRect(Rect(0,0,Ziel.Width,Ziel.Height), Quelle.Canvas, Rect(X,Y,X + Ziel.Width, Y + Ziel.Height)); Ziel.SaveToFile('teilstück1.bmp'); inc(X,Ziel.Width); Ziel.Canvas.CopyRect(Rect(0,0,Ziel.Width,Ziel.Height), Quelle.Canvas, Rect(X,Y,X + Ziel.Width, Y + Ziel.Height)); Ziel.SaveToFile('teilstück2.bmp'); inc(X,Ziel.Width); Ziel.Canvas.CopyRect(Rect(0,0,Ziel.Width,Ziel.Height), Quelle.Canvas, Rect(X,Y,X + Ziel.Width, Y + Ziel.Height)); Ziel.SaveToFile('teilstück3.bmp'); inc(X,Ziel.Width); Ziel.Canvas.CopyRect(Rect(0,0,Ziel.Width,Ziel.Height), Quelle.Canvas, Rect(X,Y,X + Ziel.Width, Y + Ziel.Height)); Ziel.SaveToFile('teilstück4.bmp'); finally Ziel.Free; end; finally Quelle.Free; end; end; ich will es vieleicht in einer schleife durchlaufen lassen dass er die bilder in 16 teile zerschneidet funktioniert aber irgentwie noch nicht richtig wenn ich Y variable um 50 erhöhe und X wieder auf null stell kann mir vieleicht einer helfen? |
Re: bild zerschneiden
Wieso um 50 erhöhen? Wenn, dann ja wohl um Ziel.Height, oder?
|
Re: bild zerschneiden
ja genau das alles runterrutscht um 50 dass ich die anderen bilder abspeichern kann
also die zweite zeile halt |
Re: bild zerschneiden
Sry, ich versteht gerade nicht, wo Dein Problem liegt. Kriegst Du die Schleife nicht hin? Wie sieht Dein Versuch denn aus?
|
Re: bild zerschneiden
der quelltext oben ist ja für die erste zeile die bilder
und mein großes bild soll in 4 mal 4 bilder aufgeteilt werden ich will irgentwie die höhe ändern dass ich nicht mehr von ganz die bildstücke bekomme sondern von der zweiten zeile
Delphi-Quellcode:
ich habs mit teilstück5 so versucht aber das sind irgentwie nicht die richtigen koordinaten
x:=0;
y:=50; Ziel.Canvas.CopyRect(Rect(0,0,Ziel.Width,Ziel.Height), Quelle.Canvas, Rect(X,Y,X + Ziel.Width, Y + Ziel.Height)); Ziel.SaveToFile('teilstück5.bmp'); |
Re: bild zerschneiden
Wie kommst Du auf 50? Hier machst Du es richtig:
Zitat:
|
Re: bild zerschneiden
Delphi-Quellcode:
meinst du so?
x:=0;
inc(Y,Ziel.width); Ziel.Canvas.CopyRect(Rect(0,50,Ziel.Width,Ziel.Height), Quelle.Canvas, Rect(X,Y,X + Ziel.Width, Y + Ziel.Height)); Ziel.SaveToFile('teilstück5.bmp'); oder muss ich bei
Delphi-Quellcode:
hinschreiben und nicht witdh?
inc(Y,Ziel.Height)
|
Re: bild zerschneiden
Die Begriffe X- und Y-Koordinate sind Dir ein Begriff, oder? X steht für horizontal, Y für vertikal, also muss es Height heißen.
|
Re: bild zerschneiden
ja hab ich ja gemacht aber bei mir kommt da mist raus
also kein syntax fehler sondern falsche koordinaten irgentwie |
Re: bild zerschneiden
Ich bin dann mal so böse und verdirb dir den Spaß:
Delphi-Quellcode:
procedure BmpSplitup16( bmp: TBitmap; Filename: String );
var x, y : Integer; tile : TBitmap; dX, dY : Integer; begin tile := TBitmap.Create; dX := bmp.Width div 4; dY := bmp.Height div 4; tile.Width := dX; tile.Height := dY; try for y := 0 to 3 do for x := 0 to 3 do begin BitBlt( tile.Canvas.Handle, 0, 0, dX, dY, bmp.Canvas.Handle, x*dX, y*dY, SRCCOPY ); tile.SaveToFile( Filename + IntToStr(y*4+x+1) + '.bmp' ); end; finally tile.Free; end; end; //Anwendung: var bmp: Tbitmap; begin bmp := TBitmap.Create; try bmp.LoadFromFile( '-DEINE_QUELLE-' ); BmpSplitup16( bmp, 'Test' ); finally bmp.Free; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz