JPG Bilder Crop/Resize

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

JPG Bilder Crop/Resize

Beitrag von ramses »

Hi

kennt jemand eine Funktion / DLL mit der ein Bild bezw. die JPG Datei bearbeitet werden kann?

Beispiel: Ein JPG File mit 10000*7500 Pixel in 4:3 Darstellung
soll in einer xbase-Anwendung in eine 16:9 Darstellung mit 3840*2160 konvertiert werden. (Crop + Resize)

Cu Carlo
Valar Morghulis

Gruss Carlo
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: JPG Bilder Crop/Resize

Beitrag von Werner_Bayern »

Code: Alles auswählen

#include "gra.ch"
#include "common.ch"
#include "xbp.ch"
FUNCTION BMP2BMP( oBMP, aXbpSize, lTransparency, nTransparenz)
******************************************************************
LOCAL oHuge
LOCAL oTiny
LOCAL oPS
LOCAL oRet
LOCAL nBits
LOCAL nPlanes

default lTransparency to .t.
default nTransparenz to oBMP:transparentClr

IF aXbpSize[ 2 ] > 0
   oHuge := oBMP
   nBits := oBMP:bits
   nPlanes := oBMP:planes

   // erst Presspace anfordern
   oPS   := XbpPresSpace():New():Create()
   // jetzt das Bitmap Objekt
   oTiny := XbpBitmap():New():Create()

   IF lTransparency  // transparentClr beachten
      oTiny:transparentClr := nTransparenz
      oTiny:transparency := oBMP:transparency   // Transparenzgrad
   ENDIF

   // dann das MAKE
   oTiny:Make(aXbpSize[1], aXbpSize[2], nPlanes, nBits)
   // und so klappt das auch mit Xbase++ v2.0.437
   oTiny:PresSpace(oPS)

   oHuge:Draw( oPS, { 0, 0, aXbpSize[ 1 ], aXbpSize[ 2 ]},,,GRA_BLT_BBO_IGNORE )
   oRet := oTiny
ELSE
   oRet := oBMP
ENDIF
RETURN oRet
es grüßt

Werner

<when the music is over, turn off the lights!>
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: JPG Bilder Crop/Resize

Beitrag von ramses »

Hallo Werner

danke für deinen Tip. Leider können die Xbase Funktionen die Aufgabe nicht ausführen.

Eine JPG-Datei 3840*2160 lässt sich ohne Probleme zb. auf 800*600 verkleinern.

Nehme ich eine 10000*7500 Datei ist das ergebniss nach ca. 15 Sekunden IMMER ein schwarzes Bild der gewünschten Grösse.

Dies auch mit deiner bmp2bmp() Funktion.

Nachtrag:
7000 Px breite --> OK, Bild wird korrekt verkleinert.
8000 Px breite --> funktioniert nicht mehr. Ergebnis: Schwarzes Bild.


Cu Carlo
Valar Morghulis

Gruss Carlo
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: JPG Bilder Crop/Resize

Beitrag von AUGE_OHR »

ramses hat geschrieben:Leider können die Xbase Funktionen die Aufgabe nicht ausführen.
...
Nehme ich eine 10000*7500 Datei ist das ergebniss nach ca. 15 Sekunden IMMER ein schwarzes Bild der gewünschten Grösse.
mit solchen Grössen habe ich es nie getestet ...

Frage : kann M$ PAINT mit einem so grossen Bild umgehen ?

es gibt eine FREEIMAGE.DLL / ot4xb die vielleicht so was kann.
gruss by OHR
Jimmy
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: JPG Bilder Crop/Resize

Beitrag von ramses »

Hallo Jimmy

danke für den Tip "Freeimage.dll" werde mal das Handbuch lesen und versuchen die DLL zu verwenden.

M$ Paint kann mit dem Bild umgehen, auch infranView und die anderen, wie die Tools für Handbedienung auch alle alle heissen.



Cu Carlo
Valar Morghulis

Gruss Carlo
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: JPG Bilder Crop/Resize

Beitrag von Werner_Bayern »

Servus Carlo,

wenn Du mir das Bild mal zur Verfügung stellst, teste ich damit.
es grüßt

Werner

<when the music is over, turn off the lights!>
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: JPG Bilder Crop/Resize

Beitrag von ramses »

Hallo Werner

ich habe es bereits Testweise mit "Freeimage.dll" gelöst.

Dies ist absolut die beste Lösung da die "FreeImage.dll" auch RAW Bilder verschiedener Kameras direkt lesen und die Metadaten in die bearbeiteten Bilder übernimmt. Aufwendige Vor und Nacharbeiten wie Konvert Raw->JPG und eine separate Datei mit den Metadaten der Bilder führen entfallen damit.

Dennoch Danke für dein Testangebot.

Cu Carlo
Valar Morghulis

Gruss Carlo
Benutzeravatar
Baser
Rookie
Rookie
Beiträge: 17
Registriert: Di, 29. Nov 2016 16:21
Wohnort: Mönchengladbach

Re: JPG Bilder Crop/Resize

Beitrag von Baser »

Hallo ihr Lieben,

ich arbeite noch nicht all zu lange mit Xbase++, deswegen entschuldigt, wenn die Frage etwas komisch erscheint ... mit Crop/Resize meint ihr im Prinzip doch nur die Verkleinerung/Komprimierung der Bilddateien, oder?

Ich verwende bisher keine .DLLs sondern komprimiere meine Bilder über das Browsertool Optimizilla, auf das ich hier im Guide aufmerksam wurde. Da hab ich jetzt nur nicht die Resize-Funktion von 4:3 auf 16:9 mit drin, aber das brauchte ich bisher nur einmal und hab das fix mit MS Paint gelöst, wie ihr es anscheinend auch macht, wenn ihr nicht gerade die freeimage.dll verwendet? Gibt's Gründe außer den Speicher und das schnellere Laden der Website, warum man Bildern croppen/resizen sollte? Ich komprimiere die Bilder aus eben genannten zwei Gründen, aber die Änderung von 4:3 auf 16:9 klingt fast so, als würde da noch eine andere Intention hinter stecken?

Sorry für das Unwissen und ich freue mich über Antworten, die mir die Augen öffnen,

Grüße, Baser
Der Weg ist das Ziel.
Antworten