AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi wie ändere ich die Abmessungen eines Bildes?
Thema durchsuchen
Ansicht
Themen-Optionen

wie ändere ich die Abmessungen eines Bildes?

Ein Thema von iaby · begonnen am 8. Dez 2003 · letzter Beitrag vom 16. Sep 2005
Antwort Antwort
iaby

Registriert seit: 30. Nov 2002
Ort: BW
258 Beiträge
 
#1

wie ändere ich die Abmessungen eines Bildes?

  Alt 8. Dez 2003, 18:41
ich weiß, das wurde schon tausendmal diskutiert, aber ich hab einfach nix passendes gefunden. es wird zwar immer die paintbox empfohlen, aber ich bekomme damit einfach nix hin!

deshalb meine bitte:
hat jemand eine geeignete prozedure parat, die mir die größe eines bildes (C:\bild.bmp) verändert, und anschliessend speichert (c:\neuesbild.bmp)? oder zumindest die passenden procedures und functions der paintbox? ich scheitere schon beim laden eines bitmaps in die paintbox (habs über eine TBitmap probiert, aber dann bekomm ich das bild später nicht gespeichert).
das bild soll dann, egal wie groß es vorher war, abmessungen von 800x600 haben (proportional braucht es nicht zu sein!)

kann mir jemand helfen?

danke schonmals im voraus,
iaby
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.165 Beiträge
 
Delphi 12 Athens
 
#2

Re: wie ändere ich die Abmessungen eines Bildes?

  Alt 8. Dez 2003, 20:13
Ein Hallöle von http://www.FrankNStein.de/Smiley-Wolke.gif,

einfach mal aus dem Bauch heraus, würde es so geh'n.

StretchDraw ist zwar nicht die beste Art ein Bild zu bearbeiten, da das Bild nicht geglättet wird. Es ist aber in TBitMap schon eingebaut.
Wenn doch noch eine Glättung benötigt wird, findest du mit Sicherheit etwas hier im Forum. ()

Delphi-Quellcode:
Procedure ZoomBitMap(Filename: String);
  Var BM: TBitMap;
    {X, Y: Integer;}

  Begin
    BM := TBitMap.Create;
    BM.LoadFromFile(Filename);
    {X := BM.Width;}
    {Y := BM.Height;}
    If BM.Width < 800 Then BM.Width := 800;
    If BM.Height < 600 Then BM.Height := 600;

    (* Größe des BitMap's ändern:              *
     * (0, 0, X - 1, Y - 1) => (0, 0, 799, 599) *)

    BM.Canvas.StretchDraw(Rect(0, 0, 799, 599), BM);

    If BM.Width > 800 Then BM.Width := 800;
    If BM.Height > 600 Then BM.Height := 600;
    BM.SaveToFile(Filename);
    BM.Free;
  End;
(X & Y wind für StretchDraw nicht benötigt)

PS: ich habs noch nicht getestet, es sollte aber funktionieren


http://www.FrankNStein.de/Smiley-Kuss.gif * * http://www.FrankNStein.de/Smiley-Spinne.gif * * * http://www.FrankNStein.de/Smiley-Winken.gif
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
OLLI_T

Registriert seit: 13. Okt 2003
Ort: Nähe Wetzlar / Hessen
143 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: wie ändere ich die Abmessungen eines Bildes?

  Alt 8. Dez 2003, 22:08
Ein Hallo an Wolke 7!

Zitat:
StretchDraw ist zwar nicht die beste Art ein Bild zu bearbeiten, da das Bild nicht geglättet wird
Ein munteres SetStretchBltMode auf den Ziel Device Kontext abgefeuert wirkt gar wahre Wunder:

Delphi-Quellcode:
...
SetStretchBltMode(BM.Canvas.Handle,STRETCH_HALFTONE);
BM.Canvas.StretchDraw(Rect(0, 0, 799, 599), BM);
...
Viele Grüsse

OLLI
No Pain No Gain!
  Mit Zitat antworten Zitat
Gandalfus

Registriert seit: 19. Apr 2003
407 Beiträge
 
Delphi 2006 Professional
 
#4

Re: wie ändere ich die Abmessungen eines Bildes?

  Alt 9. Dez 2003, 12:57
laden und grösse anpassen und anzeigen in einer Paintbox.
Delphi-Quellcode:
var
  Backbild: Tbitmap;
  orginalbild: Tbitmap;

IF Opendialog1.execute then
begin
  orginalbild := TBitmap.create;
  orginalbild.loadfromfile(Opendialog1.filename);
  Paintbox1.width := 800;
  Paintbox1.heught := 600;
  Backbild:= TBitmap.create;
  Backbild.width := 800;
  Backbild.height := 600;
  Backbild.Canvas.StretchDraw(Rect(0, 0, Backbild.width , Backbild.height), orginalbild);
  Paintbox1.canvas.draw(0,0,Backbild);
end;
Speichern:
Backbild.savetofile(c:\neuesbild.bmp) im destruktor wieder freigeben:
Delphi-Quellcode:
Backbild.free;
orginalbild.free;
mfg
  Mit Zitat antworten Zitat
iaby

Registriert seit: 30. Nov 2002
Ort: BW
258 Beiträge
 
#5

Re: wie ändere ich die Abmessungen eines Bildes?

  Alt 9. Dez 2003, 15:46
ein grosses DANKE mal an alle!

@himitsu:
zum verkleinern klappt das echt super, aber wenn ichs vergrößern will hab ein prob:
methode 1)
ich setze die größe des bildes gleich auf 800x600 und komme dann mit stretchdraw, dann habe ich aber nur das bild in originalgröße in der linken oberen ecke! (was ja auch logisch ist)
methode 2)
ich setzte die größe des bildes nach stretchdraw, aber dann ist mein bild abgeschnitten und ein kleiner teil des bildes ist dann 800x600 (was ja auch wieder logisch ist!)

wie mache ich es jetzt, dass ich ein bild vergrößern kann?
am besten wäre es, wenn dazu kein weiteres TBitmap verwendet werden müsste!

gruss,
iaby
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.165 Beiträge
 
Delphi 12 Athens
 
#6

Re: wie ändere ich die Abmessungen eines Bildes?

  Alt 9. Dez 2003, 16:18
Uups, Stimmt ja.

Dann halt doch BitMaps:
Delphi-Quellcode:
Procedure ZoomBitMap(Filename: String);
  Var BM, BM2: TBitMap;

  Begin
    BM := TBitMap.Create;
    BM.LoadFromFile(Filename);
    BM2 := TBitMap.Create;
    BM2.Width := 800;
    BM2.Height := 600;
    BM2.PixelFormat := BM.PixelFormat;
    (* Größe des BitMap's ändern *)
    BM2.Canvas.StretchDraw(Rect(0, 0, 799, 599), BM);
    BM2.SaveToFile(Filename);
    BM2.Free;
    BM.Free;
  End;
(es gibt zwar noch 'ne Möglichkeit es doch mit nur einem BitMap zu machen, da ist aber das hier einfacher)


http://www.FrankNStein.de/Smiley-Kuss.gif * * http://www.FrankNStein.de/Smiley-Spinne.gif * * * http://www.FrankNStein.de/Smiley-Winken.gif
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Gandalfus

Registriert seit: 19. Apr 2003
407 Beiträge
 
Delphi 2006 Professional
 
#7

Re: wie ändere ich die Abmessungen eines Bildes?

  Alt 9. Dez 2003, 17:13
das kommt mir doch irgendwie bekannt vor.
  Mit Zitat antworten Zitat
iaby

Registriert seit: 30. Nov 2002
Ort: BW
258 Beiträge
 
#8

Re: wie ändere ich die Abmessungen eines Bildes?

  Alt 10. Dez 2003, 10:39
danke, funzt wunderbar!

gruss,
iaby
  Mit Zitat antworten Zitat
fabi65
(Gast)

n/a Beiträge
 
#9

Re: wie ändere ich die Abmessungen eines Bildes?

  Alt 16. Sep 2005, 13:38
hi, wie kann ich jetzt jpg´s kleiner machen? mit bmp klappt das 1a
  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 12:33 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