Seite 1 von 1

JPG Bilder Crop/Resize

Verfasst: Di, 20. Dez 2016 12:52
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

Re: JPG Bilder Crop/Resize

Verfasst: Di, 20. Dez 2016 15:19
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

Re: JPG Bilder Crop/Resize

Verfasst: Di, 20. Dez 2016 16:22
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

Re: JPG Bilder Crop/Resize

Verfasst: Di, 20. Dez 2016 19:38
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.

Re: JPG Bilder Crop/Resize

Verfasst: Di, 20. Dez 2016 20:28
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

Re: JPG Bilder Crop/Resize

Verfasst: Di, 20. Dez 2016 21:25
von Werner_Bayern
Servus Carlo,

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

Re: JPG Bilder Crop/Resize

Verfasst: Mi, 21. Dez 2016 10:13
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

Re: JPG Bilder Crop/Resize

Verfasst: Mi, 11. Jan 2017 10:35
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