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

JPG Bilder Crop/Resize

Beitragvon ramses » Di, 20. Dez 2016 12:52

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
ramses
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 347
Registriert: Mi, 28. Jul 2010 16:16

Re: JPG Bilder Crop/Resize

Beitragvon Werner_Bayern » Di, 20. Dez 2016 15:19

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 euch

Werner
Benutzeravatar
Werner_Bayern
Programmier-Gott
Programmier-Gott
 
Beiträge: 1207
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern

Re: JPG Bilder Crop/Resize

Beitragvon ramses » Di, 20. Dez 2016 16:22

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
ramses
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 347
Registriert: Mi, 28. Jul 2010 16:16

Re: JPG Bilder Crop/Resize

Beitragvon AUGE_OHR » Di, 20. Dez 2016 19:38

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
Benutzeravatar
AUGE_OHR
Marvin
Marvin
 
Beiträge: 10055
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: JPG Bilder Crop/Resize

Beitragvon ramses » Di, 20. Dez 2016 20:28

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
ramses
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 347
Registriert: Mi, 28. Jul 2010 16:16

Re: JPG Bilder Crop/Resize

Beitragvon Werner_Bayern » Di, 20. Dez 2016 21:25

Servus Carlo,

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

Werner
Benutzeravatar
Werner_Bayern
Programmier-Gott
Programmier-Gott
 
Beiträge: 1207
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern

Re: JPG Bilder Crop/Resize

Beitragvon ramses » Mi, 21. Dez 2016 10:13

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
ramses
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 347
Registriert: Mi, 28. Jul 2010 16:16

Re: JPG Bilder Crop/Resize

Beitragvon Baser » Mi, 11. Jan 2017 10:35

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.
Benutzeravatar
Baser
Rookie
Rookie
 
Beiträge: 13
Registriert: Di, 29. Nov 2016 16:21
Wohnort: Mönchengladbach


Zurück zu Programmierung allgemein

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast