AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Image aus der DB "resizen" und ins ClipBoard kopieren
Thema durchsuchen
Ansicht
Themen-Optionen

Image aus der DB "resizen" und ins ClipBoard kopieren

Ein Thema von Reinhardtinho · begonnen am 17. Sep 2007 · letzter Beitrag vom 20. Sep 2007
Antwort Antwort
Benutzerbild von Reinhardtinho
Reinhardtinho

Registriert seit: 26. Feb 2007
411 Beiträge
 
Delphi 5 Enterprise
 
#1

Image aus der DB "resizen" und ins ClipBoard kopie

  Alt 17. Sep 2007, 14:39
Hallo zusammen,

ich habe hier ein Bild in einem Image-Feld vom Typ TJvDBImage und möchte diee nun mit einer einheitlichen Größe (Maximale Breite - Maximale Höhe) nach Excel bringen (über Zwischenablage).

Mein Problem ist es, das Image in der Größe so zu ändern, dass ich die neue Größe in die Zwischenablage bekomme und nicht die Originalgröße.

Seit ihr bereit euer Wissen mit mir zu teilen?

Vielen Dank

MFG
Lorenz


[Edit]Rechtschreibung[/Edit]
Ich habe viel von meinem Geld für Alkohol, Weiber und schnelle Autos ausgegeben ... Den Rest habe ich einfach verpraßt.

George Best - 22.05.1946 - 25.11.2005 - nordirischer Fußballspieler
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Image aus der DB "resizen" und ins ClipBoard k

  Alt 17. Sep 2007, 17:38
Kopiere es skaliert in eine anderes Bitmap und exportiere dieses in die Zwischenablage
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Reinhardtinho
Reinhardtinho

Registriert seit: 26. Feb 2007
411 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: Image aus der DB "resizen" und ins ClipBoard k

  Alt 18. Sep 2007, 14:47
Meinst du etwa so mit "kopieren":

Delphi-Quellcode:
    
Image1.Width := 100;
Image1.Height := 100;

Bitmap := TBitmap.Create;

try
  Bitmap.Width := Image1.Width;
  Bitmap.Height := Image1.Height;

  Bitmap := Image1.Picture.Bitmap;
finally
  Bitmap.Free;
end;
oder habe ich dich da falsch verstanden?

MFG
Lorenz
Ich habe viel von meinem Geld für Alkohol, Weiber und schnelle Autos ausgegeben ... Den Rest habe ich einfach verpraßt.

George Best - 22.05.1946 - 25.11.2005 - nordirischer Fußballspieler
  Mit Zitat antworten Zitat
Benutzerbild von Reinhardtinho
Reinhardtinho

Registriert seit: 26. Feb 2007
411 Beiträge
 
Delphi 5 Enterprise
 
#4

Re: Image aus der DB "resizen" und ins ClipBoard k

  Alt 20. Sep 2007, 11:54
*push*

Hallo zusammen,

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  Bitmap : TBitmap;
begin
  Image1.Width := 10;
  Image1.Height := 10;

  Bitmap := TBitmap.Create;

  try
    Bitmap.Width := Image1.Width;
    Bitmap.Height := Image1.Height;

    Bitmap := Image1.Picture.Bitmap;

    Bitmap.SaveToFile('C:\Dokumente und Einstellungen\Lorenz.Reinhardt\Desktop\Bild.bmp');
  finally
    Bitmap.Free;
  end;
end;
Hiermit habe ich mal das Bild abgespeichert, aber die Größe ist gleich geblieben.

War das mit "Kopieren" gemeint oder habe ich es falsch umgesetzt?

Vielen Dank.

MFG
Lorenz
Ich habe viel von meinem Geld für Alkohol, Weiber und schnelle Autos ausgegeben ... Den Rest habe ich einfach verpraßt.

George Best - 22.05.1946 - 25.11.2005 - nordirischer Fußballspieler
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Image aus der DB "resizen" und ins ClipBoard k

  Alt 20. Sep 2007, 12:52
Hallo Reinhardtinho,

(habe gerade kein Delphi zur Hand, daher nur etwas pauschaler...)

ich habe mal eine etwas umständliche Lösung für einen BILDAUSSCHNITT genutzt. Wenn Du nichts besseres findest, kannst Du es vielleicht so versuchen:

ImageOrginal
...beinhaltet das originale Bild

ImageTmp
...ist auf die Zielgröße eigestellt
...Stretch und Proportional auf Ein
...das Bild (oder bei mir Bildausschnitt) von ImageOriginal dort hineinkopieren
(das Bild wird nun korrekt dargestellt, die tatsächliche Bildgröße kann aber noch abweichen)

ImageNeu
...ist auf die Zielgröße eigestellt
...Picture-Größe ebenfalls auf die Zielgröße einstellen
...Stretch und Proportional auf Aus
...ImageTmp.Canvas dem ImageNeu.Canvas zuweisen
(das Bild wird nun korrekt dargestellt und hat auch die richtige Größe)
...Bild in Zwischenablage kopieren...

Wie gesagt, wenn Du nichts besseres findest sollte das so sicher funktionieren (wenn auch nicht sonderlich elegant).

Stahli
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Image aus der DB "resizen" und ins ClipBoard k

  Alt 20. Sep 2007, 13:08
Du kopierst das Bild auch 1:1. Schau dir mal .Canvas.StretchDraw() an
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Reinhardtinho
Reinhardtinho

Registriert seit: 26. Feb 2007
411 Beiträge
 
Delphi 5 Enterprise
 
#7

Re: Image aus der DB "resizen" und ins ClipBoard k

  Alt 20. Sep 2007, 13:32
Super, das mit dem Canvas.StretchDraw() klappt nun wunderbar.

Nun noch etwas, ich habe das jetzt für ein Bitmap gemacht, in der Datenbank können (bzw. werden) die Bilder von unterschiedlichen Typen sein (*.bmp; *.jpg; *.jpeg).

Nun habe ich in einer Testanwendung mal ein Bild vom Typ *.jpg geladen und verkleinert abgespeichert, allerdings ist das Resultat eine weiße Fläche (mit richtiger Größe).

Was muss ich noch ändern, dass auch Jpg-Bilder verkleinert werden können?

Delphi-Quellcode:
  Bitmap := TBitmap.Create;

  try
    Bitmap.Width := 100;
    Bitmap.Height := 100;

    Bitmap.Canvas.StretchDraw(Rect(0,0,100,100), Image1.Picture.Bitmap);

    Bitmap.SaveToFile('C:\Dokumente und Einstellungen\Lorenz.Reinhardt\Desktop\Bild.bmp');
  finally
    Bitmap.Free;
  end;

Vielen Dank!

MFG
Lorenz
Ich habe viel von meinem Geld für Alkohol, Weiber und schnelle Autos ausgegeben ... Den Rest habe ich einfach verpraßt.

George Best - 22.05.1946 - 25.11.2005 - nordirischer Fußballspieler
  Mit Zitat antworten Zitat
Benutzerbild von Reinhardtinho
Reinhardtinho

Registriert seit: 26. Feb 2007
411 Beiträge
 
Delphi 5 Enterprise
 
#8

Re: Image aus der DB "resizen" und ins ClipBoard k

  Alt 20. Sep 2007, 16:26
Nach ein bisschen Suchen habe ich die Prozedur Assign gefunden und somit ist das Problem gelöst.
Vielen Dank an alle die geholfen haben.

Hier noch schnell meine Lösung:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  Bitmap1, Bitmap2 : TBitmap;
  AFormat : Word;
  AData : THandle;
  APalette : HPALETTE;
begin
  Bitmap1 := TBitmap.Create;
  Bitmap2 := TBitmap.Create;

  try
    Bitmap1.Width := 100;
    Bitmap1.Height := 100;

    Bitmap2.Assign(Image1.Picture.Graphic);
    Bitmap1.Canvas.StretchDraw(Rect(0,0,100,100), Bitmap2);

    Bitmap1.SaveToClipboardFormat(AFormat, AData, APalette);
    ClipBoard.SetAsHandle(AFormat, AData);
  finally
    Bitmap1.Free;
    Bitmap2.Free;
  end;
end;
MFG
Lorenz


*** GELÖST ***
Ich habe viel von meinem Geld für Alkohol, Weiber und schnelle Autos ausgegeben ... Den Rest habe ich einfach verpraßt.

George Best - 22.05.1946 - 25.11.2005 - nordirischer Fußballspieler
  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 15:42 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