JPG Bildern, grösse ändern in XBASE ?

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

Moderator: Moderatoren

Antworten
Benutzeravatar
BenOve
Rookie
Rookie
Beiträge: 18
Registriert: Fr, 18. Sep 2015 14:24
Wohnort: Hestra Schweden

JPG Bildern, grösse ändern in XBASE ?

Beitrag von BenOve »

Quick PDF (Brandel +Pablo) v 1016 funktioniert wunderbar, und ist erstaunlich schnell.

Ein von meine Ziele ist es ,hunderte von PDF Büchern zu behandeln damit ein Bibliotek automatisch entsteht.
Fast alles ist fertig, nur habe ich Riesenprobleme Seite1.jpg + Seite2.jpg + Seite3.pdf in eine einzige .jpg zu verbinden.
(Exampel Datei zeigt wie es gedacht ist )

Debenu hat einige Funkionen es zu erledigen und Debenu Support hat gesagt das mein Program richtig ist, aber es funktioniert nicht.

Dann habe ich versucht mit XBASE GraBitBlt () ,
Es sollte gehen, aber bis jetzt ohne erfolg

Vielleicht könnte auch diese Idé funktionieren
DLLFUNCTION BitBlt( hdcDest, nXDest, nYDest, nWidth, nHeight, hdcSrc, nXSrc,nYSrc, dwRop ) USING STDCALL FROM GDI32.DLL

Vielleicht gibt es einen besseren Ausweg !?
Vielen dank und Gruss
Bengt
Dateianhänge
seee_it_example2.jpg
seee_it_example2.jpg (37.73 KiB) 4166 mal betrachtet
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: JPG Bildern, grösse ändern in XBASE ?

Beitrag von brandelh »

Ich vermute du erstellt die JPG direkt mit quickpdf aus dem Original.
Musst du diese nun in eine JPG zum Speichern kopieren oder willst du das anzeigen ?

Wenn es um Anzeigen geht, kannst du statt einer Static für das riesen JPG
auch 3 machen, links eines in groß und rechts daneben die 2 mit halber Höhe.
Die Grafikfunktionen in Xbase++ statics können dann die Größe dynamisch anpassen.

Mit einem JPEG hab ich ein Beispiel einer Vorschau, einfach 3 davon ...
Dateianhänge
3-XbpStatic.png
3-XbpStatic.png (208.37 KiB) 4161 mal betrachtet
Gruß
Hubert
Benutzeravatar
BenOve
Rookie
Rookie
Beiträge: 18
Registriert: Fr, 18. Sep 2015 14:24
Wohnort: Hestra Schweden

Re: JPG Bildern, grösse ändern in XBASE ?

Beitrag von BenOve »

Danke für den Antwort,

Debenu macht drei .jpg.
Das erste Problem ist das einige .jpg's 200 pix breit sind, und andere 2000 px
Es hängt von PDF ab.
Zuerst müssen alle begradigt werden, Jpg1 = 700 px wäre gut
Jpg2 und Jpg3 viel kleiner

Mein Ziel ist es von XBASE HTML code zu machen, und die Bilder werden nie durch XBASE angeguckt.
Diese HTML soll auch responsive sein, deshalb ist eine einzige .jpg viel einfacher als responsive FRAMES
zu machen. Das funktioniert schoon alles wunderbar,

Nur ein kombiniertes jpg habe ich bis jetzt nicht geschafft.

Ich denke mit vorhandene XBASE Funktionen sollte es möglich sein eine neüe Funktion zu schreiben

Resize_jpg("1.jpg", 700 ) um es 700 pix breit zu machen.


und dann etwa

Combine_jpgs( ajPG_array, aSizeArray, cTargetFileName )

Wahrscheinlich steckt die ganze Lösung in GraBitBlt() aber ich habe es bis jetzt nicht hingekriegt
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: JPG Bildern, grösse ändern in XBASE ?

Beitrag von brandelh »

OK du hast also z.b. 700 breit 1050 hoch (2/3 von Papier A...)
und 2 mit 333 breit und 500 hoch ( oder so ähnlich ) und kombinieren in 1050 x 1050 ...

Lade die 3 grafiken in bitmap objekte und nutze DRAW um sie auf eine neue bitmap zu malen.
Das könnt in etwa so wie bei meiner Uhr funktionieren, hab aber lange nichts mehr damit gemacht.
Auf jeden Fall würde ich die kleinen in das Zielformat (neu) malen. bitblt kann helfen ... aber es ist lange her :-)

:arrow: http://www.xbaseforum.de/viewtopic.php?f=16&t=2556

Jimmy hat mit grabitblt einiges gemacht, vielleicht hat er eine bessere Idee
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: JPG Bildern, grösse ändern in XBASE ?

Beitrag von AUGE_OHR »

BenOve hat geschrieben:Resize_jpg("1.jpg", 700 ) um es 700 pix breit zu machen.
das geht relative einfach mit BMP2BMP()

Code: Alles auswählen

FUNCTION BMP2BMP( oBMP, aXbpSize )
LOCAL oHuge
LOCAL oTiny
LOCAL oPS
LOCAL oRet

   IF aXbpSize[ 2 ] > 0
      oHuge := oBMP
      oPS := XBPPRESSPACE() :new() :Create()
      //Create a small bitmap to fit in our XbpStatic
      oTiny := XBPBITMAP() :New() :Create()
      oTiny:Make( aXbpSize[ 1 ], aXbpSize[ 2 ] )
      oTiny:presSpace( oPS )
      //Copie and resize the huge bitmap to the small bitmap
      oHuge:Draw( oPS, { 0, 0, aXbpSize[ 1 ], aXbpSize[ 2 ] },,, GRA_BLT_BBO_IGNORE )
      oRet := oTiny
   ELSE
      oRet := oBMP
   ENDIF

RETURN oRet
BenOve hat geschrieben:Combine_jpgs( ajPG_array, aSizeArray, cTargetFileName )
das es 1 JPG werden soll habe ich verstanden aber nicht wie die "angeordnet" werden sollen ?

ich gehe mal davon aus das die NICHT "übereinander" gelegt werden sollen sondern "einzeln untereinander" ?
wenn ja ist das Prinzip wie der Code von BMP2BMP() ... ein "grosses" leeres Bitmap anlegen oTiny:Make() und deine einzelnen JPG in ein Teil "malen" oHuge:Draw()
BenOve hat geschrieben:Wahrscheinlich steckt die ganze Lösung in GraBitBlt() aber ich habe es bis jetzt nicht hingekriegt
das Ergebnis sollte das selbe sein
gruss by OHR
Jimmy
Benutzeravatar
BenOve
Rookie
Rookie
Beiträge: 18
Registriert: Fr, 18. Sep 2015 14:24
Wohnort: Hestra Schweden

Re: JPG Bildern, grösse ändern in XBASE ?

Beitrag von BenOve »

Vielen Dank, es sieht interessant aus

Aber wie schaffe ich Parameter oBMP ?

So etwa habe ich gerade ohne Erfolg probiert
oPS1 := XBPPRESSPACE():new():Create()
oBMP:=XbpBitmap():new():create(oPS1)
oBMP:=loadfile("1.jpg")
oBMP:=draw(oPS1)
aXbpSize:={400,600}

Ich benutze HybridMode und mache bestimmt etwas falsch hier

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

Re: JPG Bildern, grösse ändern in XBASE ?

Beitrag von AUGE_OHR »

BenOve hat geschrieben:Aber wie schaffe ich Parameter oBMP ?
die Syntax ist

Code: Alles auswählen

oNeu := BMP2BMP(oBMP,aSize)
du übergibt ein Bitmap Object oBMP und die gewünschte Grösse aSize und erhältst ein Bitmap Object zurück
BenOve hat geschrieben:So etwa habe ich gerade ohne Erfolg probiert
oPS1 := XBPPRESSPACE():new():Create() // ok
oBMP:=XbpBitmap():new():create(oPS1) // oPS1 falsche Syntax
oBMP:=loadfile("1.jpg") // falsche Syntax
oBMP:=draw(oPS1) // falsche Syntax, grösse angeben
aXbpSize:={400,600} // zu spät ...

Ich benutze HybridMode und mache bestimmt etwas falsch hier
o:loadfile() und o:draw() sind Method(en) von XbpBitmap() oder XbpIcon() und keine FUNCTION.
:draw()- Bitmap anzeigen

:draw( [<oTargetPS>] , ;
<aTargetRect> , ;
[<aSourceRect>], ;
[<nRasterOP>] , ;
[<nCompress>] , ;
[<nState>] ) --> lSuccess
du kannst jetzt die FUNCTION BMP2BMP() als Grundlage verwenden um deine 3 JPG zu einem Bild zu kombinieren.

1.) oPS := XBPPRESSPACE():new():Create() // anlegen
2.) oTiny:=XbpBitmap():new():create() // anlegen
3.) oTiny:Make( aXbpSize[ 1 ], aXbpSize[ 2 ] ) // Grösse vom grossen Bild
4.) oTiny:presSpace( oPS ) // verknüpfen der Presspace mit dem Bitmap Object

FOR i := 1 TO 3
5.) o1of3JPG:Draw( oPS, { x, y, o1of3JPG_Size[ 1 ], o1of3JPG_Size[ 2 ] },,, GRA_BLT_BBO_IGNORE )
NEXT

du "malst" jedes einzelne JPG in den Presspace "oPS" (<oTargetPS>) welches mit dem "leeren" Bitmap angelegt wurde.
<aTargetRect> ist die Position x,y und Grösse (Rechteck) in die jedes einzelne JPG "gemalt" werden soll.
<aSourceRect> wäre für den Fall das nur ein Teil von einem JPG für das grösse Bild verwendet werden soll
<nRasterOP> default GRA_BLT_ROP_SRCCOPY
<nCompress> von Bedeutung wenn man verkleinert

6.) oRet := oTiny
RETURN oRet // das grosse Bild Object als Rückgabe
gruss by OHR
Jimmy
Antworten