![]() |
JPG - grösse verändern....
wie kann ich die breite und höhe eines jpg verändern, ich möchte das die breite immer 51 px hat, die höhe sollte sich dann dynamisch anpassen...
wie geht das? :D |
Wenn Du das Bild in ein Image ladest, kannst du doch die Width auf 51px stellen. Würde dann so aussehen:
Code:
Image1.width := 51; // Auf Breite 51 Pixel setzen
Image1.Proportional := True; //Damit keine Verzerrung entsteht |
Proportional wird angemeckert, warum?
|
Damit es sich einpasst. Sonst schneidet es ab ? Oder was wolltest Du jetzt wissen ? :?:
|
Code:
bleibt in der ide bei Proportional hängen...
Image1.Proportional
|
Du meinst Du kriegst diese Meldung :
Zitat:
Oder was? |
ja, genau..
|
Welche Delphiversion hast Du?
Ich habe die 4. Und bei mir kommt die selbe Meldung. Könnte es sein, dass diese Property erst ab der Version 5 vorhanden ist? Mirilin. ************************************************** ********************* PS : Denkanstoss Faktor = AlteBreite / NeueBreite Und dann die Höhe mit dem Faktor versehen. ************************************************** ********************* |
delphi 5
es wäre doch zu shön wenn das mit dem
Code:
klappen würde...
Image1.Proportional := True;
das mit dem faktor stimmt, nur bekomme ich das nicht hin :( |
Hallo,
unnter D6 lässt sich das ganze komplizieren und funktioniert auch wie es soll. Grüsse, Daniel :hi: |
wie kann ich das ganze aufrufen?
so?
Code:
procedure TForm1.Button6Click(Sender: TObject);
begin Image1.width := 51; // Auf Breite 51 Pixel setzen Image1.Proportional := True; //Damit keine Verzerrung entsteht Image1.Picture.SaveToFile('c:\1.jpg'); end; |
Heisst dass Du willst die Grösse eines Bildes verändern und dann so speichern ??
Übrigens ich habe Delphi6 und da klappt es mit Proportional ? Fehlt er bei Dir in der Eigenschaft von TImage ? Hier noch ein Auszug aus der Delphi-Hilfe zu Proportional
Code:
Die Eigenschaft Proportional gibt an, ob die Grafik ohne Verzerrung geändert werden soll, damit sie in das Steuerelement paßt.
property Proportional: Boolean; Beschreibung Setzen Sie Proportional auf True, damit die Grafik vollständig im TImage-Steuerelement angezeigt wird und keine Verzerrungen wie bei der Eigenschaft Stretch vorkommen. Grafiken, die zu groß für das Steuerelement sind, werden solange skaliert (wobei das Bildseitenverhältnis beibehalten wird), bis sie in dem Steuerelement vollständig angezeigt werden können. Zu kleine Grafiken werden in der normalen Größe dargestellt. Proportional kann Grafiken verkelinern, aber nicht vergrößern. Wenn sich die Größe des Steuerelements ändert, wird die Größe der Grafik ebenfalls verändert. Mit der Eigenschaft Stretch kann die Größe von Grafken so angepaßt werden, daß sie exakt in das Steuerelement passen. Bei Stretch müssen Sie aber mit Verzerrungen rechnen. Mit der Eigenschaft AutoSize läßt sich die Größe des Steuerelements an die Größe der Grafik anstatt umgekehrt anpassen. Der Vorgabewert für Proportional ist False. Hinweis Proportional hat keine Auswirkungen, wenn in der Eigenschaft Picture ein Symbol angegeben ist. |
Zitat:
2. Nein, es wird sonst das original-Bild gespeichert, nicht kleiner. //Passiert jedenfalls bei mir. Grüsse, Daniel :hi: |
@Daniel B
der grund warum ich hier poste ist der, dass ich nicht weiterkomme..ich probiere schon die ganze zeit rum :) @M.Knebel habe mir delphi 7 runtergeladen..., müsste also funktionieren. kann mir jemand ein praktisches beispiel zeigen. "source" ? |
Wenn ich jetzt nicht aufgehalten werde von meiner Family, werde ich mal auf die schnelle ne Beispiel Programm schreiben ..
|
danke :dancer2:
|
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
habe hier ein kleines Beispiel-Programm zu TImage geschrieben. Ist in gezippter Form mit den SOurce und Exe. Lade erst eine Grafik ein, dann kannst Du die Werte verstellen um zu sehen was es bewirkt. Ich habe TImage auf ein ScrollBox gelegt. Falls noch fragen gibt zu dem Source oder sonst was dann poste es.. Viel Erfolg noch .. |
DANKE
ich schau es mir sofort an... |
vielen dank für dein anschuliches beispiel...
leider habe ich immer noch ein grosses problem (wann habe ich das mal nicht :oops: )ich habe ein bild geladen und habe mit
Delphi-Quellcode:
das bild auf 51 px breite gebracht, hatte die scollbox auf 51 px gestellt...
Image1.Proportional := True;
wollte dann mit
Delphi-Quellcode:
das bild speichern, wenn ich mir das bild dann anschaue, dann hat es aber immer noch die gleiche grösse wie beim laden.
Image1.Picture.SaveToFile('c:\1.jpg');
|
Hallo,
Zitat:
Zitat:
|
@Aaron: Dass ist logisch. Du veränderst nur die Darstellung vom Bild, und nicht das Bild selbst.
Also heisst Deine Frage eigentlich: Wie verändere ich die Grösse eines Bildes und speichere es als jpg. Ich schau mal ob ich was habe für Dich, da ich mich damit noch nicht beschäftigt hatte .´.. |
Gerade habe ich "Suchen"-Funktion in diesen Forum nach "jpeg" gesucht, und dabei kam dass hier raus ..
![]() Sicher kommste damit weiter ;) @Daniel B: Warste wieder schneller ;) |
au weja, ich habe mich dann falsch ausgedrückt, entschuldigung!
das mit dem öffnen und speichern habe ich hier, nur das anpassen der höhe ist nicht so wie ich es haben möchte...
Code:
procedure TForm1.Button7Click(Sender: TObject);
var i: Integer; InFileName, OutFileName: string; FilePath, FileName: string; JPEG : TJPEGImage; bFrom,bTo : tBitmap; aRect : tRect; sFile: string; wWidth, wHeight: word; H1,B1,H2:integer; begin sFile := OpenDialog1.FileName; GetJPGSize(sFile, wWidth, wHeight); Edit1.Text := IntToStr(wWidth); B1:= strtoint(edit1.text); Edit2.Text := IntToStr(wHeight); H1:= strtoint(edit2.text); try BFrom := TBitmap.Create; BTo := TBitmap.Create; JPEG := TJPEGImage.create; JPEG.LoadFromFile(opendialog1.FileName); //in ein Bitmap übergeben und jpeg freigeben BFrom.assign(jpeg); JPEG.free; //Rechteck als &Zeichnungsfläche zur verfügung stellen aRect.top := 0; aRect.left := 0; aRect.right := 150; aRect.Bottom := 150; //Grösse des Zielbitmaps festlegen bTo.Height := 150; // hier müsste sich die höhe anpassen ???? bTo.width := 51; // Auf Breite 51 Pixel setzen Image1.Proportional := True; //Damit keine Verzerrung entsteht //bitmap in das rechteck zeichnen und dem neuen bitmap &Bto& verkleinert übergeben Bto.canvas.StretchDraw(ARect, bFrom); //verkleinertes Bitmap wieder in jpeg umwandeln JPEG := TJPEGImage.create; JPEG.Assign(bTo); //Kompressionsqualität einstellen und abspeichern JPEG.Performance:=jpBestQuality ; // JPEG.compressionQuality := trackbar1.Position; JPEG.JPEGNeeded; JPEG.compress; InFileName:=opendialog1.FileName; FileName:=ExtractFileName(InFileName); // FilePath:=IncludeTrailingBackSlash(OutDirEdit.Text); OutFileName:=Concat('c:\test.jpg'); JPEG.savetofile(OutfileName); // StatusBar1.SimpleText:='Fertig!'; BFrom.Free; Bto.free; jpeg.free; except end; end; |
Habe es mir zwar noch nicht genau angeschaut, und habe auch gerade nichts passendes von mir ..
Aber hast Du Dir mal die Codes von FuckRacism angeschaut ?
Code:
procedure TForm1.resizepictur(dir: string; width, height: integer);
var i:integer; bmp:TBitmap; jpeg:TJpegImage; begin Jpeg:=TJpegImage.Create; try jpeg.LoadFromFile(dir); bmp:=TBitmap.Create; try If jpeg.width>jpeg.Height then begin bmp.width:=width; bmp.height:=height; end else begin bmp.width:=height; bmp.Height:=width; end; bmp.canvas.StretchDraw(Rect(0,0,bmp.width,bmp.height),jpeg); jpeg.assign(bmp); finally bmp.free; end; jpeg.SavetoFile(dir); finally jpeg.free; end; end; |
hab ich schon, denke damit komme ich auch soweit klar... vielen dank für deine hilfe, und entschuldige meine unklare fragestellung.
gruss aaron |
Macht nix, das kleine Program das ich schrieb konnte ich gut gebrauchen, da ich gerade an ein anderen Programm dran war wo ich mit den Eigenschaften je nach Situation wechseln musste und dann am Ende verwirrt war. Nun kann mit Hilfe dieser Orientieren :D
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:37 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