![]() |
Jpeg Auflösung ändern
Hallo, wie kann ich per Delphi mit ein beliebiges Jpeg Bild öffnen, die Äuflösung ändern und wieder abspeichern.
Öffnen und Abspeichern ist ja kein Problem...aber wie ändere ich beispielsweise die Auflösung von 1024x768 auf 640x480??? |
Re: Jpeg Auflösung ändern
zum beispiel per Stretchdraw. Der Filter, der da drni ist, versaut dir das Ergebnis aber. Ich würd zum stretchen
![]()
Delphi-Quellcode:
procedure Stretch(OldFile: string; ResX,ResY: Integer);
var b: TBitmap32; begin b := TBitmap32.Create; with b do begin LoadFromFile(OldFile); //eventuell brauchst du bereits dafür die unit "jpeg" in den uses StretchFilter := sfLanczos; Draw(rect(0,0,Width-1,Height-1),b,rect(0,0,ResX-1,ResY-1)); Width := ResX; height := ResY; SaveToFile(OldFile); //ich weiss nicht, ob das funktioniert; evtl. musst du es selber noch (z.B. mit jpeg.TJpegImage) in JPEG umwandeln und speichern end; end; |
Re: Jpeg Auflösung ändern
Hallo,
bei ganzzahligen Verhältnissen arbeitet die JPEG-Demo mit der Eigenschaft Scale. Grüße vom marabu |
Re: Jpeg Auflösung ändern
wo ist denn die jpeg demo - ich find sie bei mir net :oops:
EDIT: gefunden-.- |
Re: Jpeg Auflösung ändern
Hallo,
also irgendwie kappiere ich das mit dem Scale nicht.... Könnte mir da jemand mal ein beispiel geben? Eigentlich sollte das Programm das Bild nicht nur verkleinert darstellen sondern auch von der auflösung her kleiner machen und abspeichern....(das ist das problem) |
Re: Jpeg Auflösung ändern
Alles wesentliche steht doch bei mir drin, oder? :gruebel:
|
Re: Jpeg Auflösung ändern
..schon aber ich kappiert net so wirklich wo man dann die pixel auflösung bestimmen kann :)
|
Re: Jpeg Auflösung ändern
hmm...
ein bild hat natürlich eine auflösung. allerdings misst man die in dpi - dots per inch - pixel pro Inch. was du meinst, ist aber eher, das bild zum Beispiel von den Abmaßen 1024x768 auf 800x600 zu skalieren - das sind zwar gebräuchliche Bildschirmauflösungen, sind aber beim Bild eben keine Auflösung. Und die gibst du aber bei ResX und ResY an, ich habs ja nichtmal umbenannt. obwohls eher "DimX" und "DimY" (für Dimensions, Ausmaße) heissen sollte. sonst noch fragen? |
Re: Jpeg Auflösung ändern
welche Graphic32.dcu soll ich denn einbinden :oops:
Wenn ich die Gr32 einbinde (in uses) erkennt er StretchFilter und Draw nicht... |
Re: Jpeg Auflösung ändern
so mit dem Draw hab ichs jetzt hinbekommen.
aber der stretch filter wird nicht erkannt......hab gr32 eingebunden (version 1.8.1) |
Re: Jpeg Auflösung ändern
HIIILFE !!!
Ich habe jetzt eine ältere Graphic32 Version genommmen (1.7). Jetzt wird der stretchfilter erkannt. Bei
Delphi-Quellcode:
sagt mir das scheiß ding aber, dass es keine overload version davon gibt....was ist falsch dran????
Draw(rect(0,0,Width-1,Height-1),b,rect(0,0,ResX-1,ResY-1));
|
Re: Jpeg Auflösung ändern
overload? wohl eher, es gibt keine überladene ding mit der man bums, naja, du musst du parameter halt noch ein bisschen anpassen, so wie dirs die code completion sagt.
|
Re: Jpeg Auflösung ändern
gut das hab ich auch hinbekommen.
Aber wie mach ich die jpeg umwandlung? Ich bekomms mit Jpeg.Allign(stretch(..)) nicht hin.... |
Re: Jpeg Auflösung ändern
weiß keiner eine lösung???
|
Re: Jpeg Auflösung ändern
hmm
eventuell sind die nicht kompatibel, dann musst du das gestretchte bild erst auf die platte speichern und vom jpeg wieder laden lassen sollte auch gehen, wenn du savetostream machst und den stream von nem tbitmap wieder laden lässt, das sollte du dann aufs jpeg assignen können. |
Re: Jpeg Auflösung ändern
hat sich erledigt - danke :)
|
Re: Jpeg Auflösung ändern
Ich habe ein ähnliches Problem mit GR32, siehe
![]() Gibt es eine Möglichkeit, den Code zum Laufen zu bringen? Das mit SetSize (siehe anderes Thema) hat ja nicht funktioniert. |
Re: Jpeg Auflösung ändern
Ich werd mir das gleich ansehen, wenn auf einmal der Stretchfilter nicht mehr da ist, muss das daran liegen, dass irgendwelche sachen in der neuen version geändert wurden. welche version hast du denn? ich werd mir das mal anschauen.
|
Re: Jpeg Auflösung ändern
der stretchfilter geht ab der gr32 1.8 nicht mehr so einzubinden wie früher....
muss irgendwie über application oder so gemacht werden :? |
Re: Jpeg Auflösung ändern
Über Application? *hust*
Vielleicht ist es ja jetzt eine "application wide"-Einstellung, im Gegensatz zu "object wide" wie bisher... ne, auch nicht, habs gerade nachgesehen: Man muss jetzt TBitmap32.Resampler verwenden:
Delphi-Quellcode:
Im Image32 Demo müsste das verwendet sein, ich habs mir jetzt nicht selber angesehen.
procedure TCustomResampler.Resample(Dst: TBitmap32; DstRect: TRect; DstClip: TRect; Src: TBitmap32; SrcRect: TRect; CombineOp: TDrawMode; CombineCallBack: TPixelCombineEvent);
|
Re: Jpeg Auflösung ändern
OK, dann werde ich mir mal die Demo anschauen. Ich habe es zwar für das Vorschau-Bild in meinem Prog mit StretchBlt gelöst, aber ich möchte auch ein Bild direkt laden und wieder verkleinert speichern, dafür sollte es dann schon GR32 sein ;-)
|
Re: Jpeg Auflösung ändern
Fehlanzeige! Ich habe mir die Demo angesehen und das Ganze eingebaut, aber es wirkt sich nur auf die Anzeige aus. :( Ich will aber das Bild tatsächlich verkleinern. Und dass das mit SetSize (
![]() Wie kann ich das machen? Vielleicht mit dem Resampler? |
Re: Jpeg Auflösung ändern
Ja, ich würd schon sagen mit dem Resampler^^
|
Re: Jpeg Auflösung ändern
OK, jetzt bin ich schon viel weiter...;-)
Wie verwendet man den? In der Demo ist er nicht drin, und die Hilfe kann mir nicht helfen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:10 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 by Thomas Breitkreuz