AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Images zusammenfügen
Thema durchsuchen
Ansicht
Themen-Optionen

Images zusammenfügen

Ein Thema von 100nF · begonnen am 20. Nov 2005 · letzter Beitrag vom 11. Mai 2012
Antwort Antwort
100nF

Registriert seit: 7. Nov 2004
639 Beiträge
 
#1

Images zusammenfügen

  Alt 20. Nov 2005, 11:32
Hallo zusammen,

ich möchte mehrere images zusammenfügen.
ich habe 4 images: ImageLeft, ImageMitte, ImageRight und Image2.

das ziel ist, dass aus den 3 images ImageLeft, ImageMitte, ImageRight ein image wird, das dann in image2 zu sehen ist.
am anfang (ganz links) vom image2 muss sich ImageLinks befinden. dann kommt mehrmals (ca. 10 mal) imageMitte und am schluss noch einmal ImageRechts.

ich habs mal so probiert:
Delphi-Quellcode:
for a:=0 to 10 do
begin
  image2.picture.assign(imageLeft.picture.bitmap);
  image2.picture.Bitmap.Canvas.CopyRect(rect(imageLeft.Picture.width, 0, imageMitte.picture.Width +
  imageLeft.picture.width, imageMitte.picture.height), imageMitte.picture.bitmap.Canvas, rect(0, 0,
  imageMitte.picture.width, imageMitte.picture.Height));
  imageleft.Picture.Bitmap := image2.Picture.Bitmap;
end;
leider funktioniert es nicht so wie es soll. in image2 wird nur imageLinks angezeigt und mehr nicht.

kann mir jemand helfen?

gruss
urbanbruhin
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Images zusammenfügen

  Alt 20. Nov 2005, 11:39
Wenn die Images TImages sind, probier mal nicht immer imagex.picture sondern imagex.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
100nF

Registriert seit: 7. Nov 2004
639 Beiträge
 
#3

Re: Images zusammenfügen

  Alt 20. Nov 2005, 11:56
aber das kann doch gar nicht gehen. TImage und TPicture ist ja nicht das gleiche

also ich bin jetzt so weit:
Delphi-Quellcode:
image2.picture.assign(imageleft.picture.bitmap);
Image2.Picture.Bitmap.Width := Image2.Picture.Bitmap.Width + imageleft.picture.bitmap.width;
image2.picture.Bitmap.Canvas.CopyRect(rect(imageleft.Picture.width, 0, imagemitte.picture.Width +
imageleft.picture.width, imagemitte.picture.height), imagemitte.picture.bitmap.Canvas, rect(0, 0,
imagemitte.picture.width, imagemitte.picture.Height));
die zwei images werden zwar zusammengefügt, jedoch ist hinter dem image2 noch ein weisser strich...
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Images zusammenfügen

  Alt 20. Nov 2005, 12:00
Dann musst du halt das ganze 1 Pixel weniger machen. Und TImage hat auch eine Width, Height, Canvas usw.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#5

Re: Images zusammenfügen

  Alt 20. Nov 2005, 12:22
Sind die Images überhaupt sichtbar? Wenn nein, solltest du lieber gleich TBitmaps benutzen.
Delphi-Quellcode:
// Ich gehe mal davon aus, dass alle Bitmaps die gleiche Höhe haben
procedure CombineBitmaps(ALeft, AMid, ARight, ADest: TBitmap; const AMidCount: Integer);
var
  i: Integer;
begin
  ADest.Height := ALeft.Height;
  ADest.Width := ALeft.Width + AMid.Width * AMidCount + ARight.Width;
  ADest.Draw(0, 0, ALeft);
  for i := 0 to MidCount - 1 do
    ADest.Draw(ALeft.Width + AMid.Width * i, 0, AMid);
  ADest.Draw(ADest.WIdth - ARight.Width, 0, ARight);
end;
So würde es jedenfalls mit der GR32-Lib funktionieren, wahrscheinlich musst du den Code noch etwas anpassen.


Zitat von 3_of_8:
Dann musst du halt das ganze 1 Pixel weniger machen. Und TImage hat auch eine Width, Height, Canvas usw.
TImage.Canvas ist nichts anderes als TImage.Picture.Bitmap.Canvas .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
100nF

Registriert seit: 7. Nov 2004
639 Beiträge
 
#6

Re: Images zusammenfügen

  Alt 20. Nov 2005, 12:29
juhuu es funktioniert!!

vielen dank!!

ich musste den code nur ein bisschen abändern, jetzt sieht er so aus:
Delphi-Quellcode:
procedure CombineBitmaps(ALeft, AMid, ARight, ADest: TBitmap; const AMidCount: Integer);
var
  i: Integer;
begin
  ADest.Height := ALeft.Height;
  ADest.Width := ALeft.Width + AMid.Width * AMidCount + ARight.Width;
  ADest.Canvas.draw(0, 0, ALeft);
  for i := 0 to AMidCount - 1 do
    ADest.canvas.Draw(ALeft.Width + AMid.Width * i, 0, AMid);
  ADest.canvas.Draw(ADest.WIdth - ARight.Width, 0, ARight);
end;
gruss
urbanbruhin
  Mit Zitat antworten Zitat
Gameboy

Registriert seit: 26. Mai 2010
5 Beiträge
 
Delphi 7 Enterprise
 
#7

AW: Images zusammenfügen

  Alt 11. Mai 2012, 08:34
Geht sowas auch mit jpg Bildern?
Ich habe Zwei Bilder ein großes Bild auf das ein kleineres Bild rechts unten bündig gesetzt werden soll und dann als neues Bild gespeichert werden.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#8

AW: Images zusammenfügen

  Alt 11. Mai 2012, 09:11
Ich bin nicht sicher, aber IIRC kommt man an den Canvas eines JPEGImage nicht direkt heran. Aber man kann ja beide Bilder in Bitmaps umwandeln, zusammenpinseln und das Ergebnis wieder in ein JPEG zurückwandeln.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz