JPG Bildern, grösse ändern in XBASE ?
Moderator: Moderatoren
JPG Bildern, grösse ändern in XBASE ?
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
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 (37.73 KiB) 4166 mal betrachtet
- brandelh
- 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 ?
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 ...
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 (208.37 KiB) 4161 mal betrachtet
Gruß
Hubert
Hubert
Re: JPG Bildern, grösse ändern in XBASE ?
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
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
- brandelh
- 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 ?
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
http://www.xbaseforum.de/viewtopic.php?f=16&t=2556
Jimmy hat mit grabitblt einiges gemacht, vielleicht hat er eine bessere Idee
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
http://www.xbaseforum.de/viewtopic.php?f=16&t=2556
Jimmy hat mit grabitblt einiges gemacht, vielleicht hat er eine bessere Idee
Gruß
Hubert
Hubert
- AUGE_OHR
- 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 ?
das geht relative einfach mit BMP2BMP()BenOve hat geschrieben:Resize_jpg("1.jpg", 700 ) um es 700 pix breit zu machen.
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
das es 1 JPG werden soll habe ich verstanden aber nicht wie die "angeordnet" werden sollen ?BenOve hat geschrieben:Combine_jpgs( ajPG_array, aSizeArray, cTargetFileName )
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()
das Ergebnis sollte das selbe seinBenOve hat geschrieben:Wahrscheinlich steckt die ganze Lösung in GraBitBlt() aber ich habe es bis jetzt nicht hingekriegt
gruss by OHR
Jimmy
Jimmy
Re: JPG Bildern, grösse ändern in XBASE ?
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
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
- AUGE_OHR
- 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 ?
die Syntax istBenOve hat geschrieben:Aber wie schaffe ich Parameter oBMP ?
Code: Alles auswählen
oNeu := BMP2BMP(oBMP,aSize)
o:loadfile() und o:draw() sind Method(en) von XbpBitmap() oder XbpIcon() und keine FUNCTION.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
du kannst jetzt die FUNCTION BMP2BMP() als Grundlage verwenden um deine 3 JPG zu einem Bild zu kombinieren.:draw()- Bitmap anzeigen
:draw( [<oTargetPS>] , ;
<aTargetRect> , ;
[<aSourceRect>], ;
[<nRasterOP>] , ;
[<nCompress>] , ;
[<nState>] ) --> lSuccess
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
Jimmy