Foro | | | | - Página 1 - |
|  Georg Hovenbitzer | ¡Hola zusammen,
mich erdrückt gerade una riesige Wissenslücke y yo hoffe ihr könnt me weiterhelfen.  Ziel es, una Bild a invitar, lo a una Thumbnail a verkleiner y luego en uno Datenbank abzulegen. Mein Problema es nun el Teil zwischen Thumbnail y Datenbank y como el, Yo a una Speicheradresse / Array des Bildes y dessen Größe komme:  Als Presentación Yo el geile GDI+ Demo de Andreas genommen.
$H \windows.ph
$H \includes\Functions_GDIPLUS.ph
$H \includes\GDIP_Imageging.ph
$I \includes\GDIP_Helper.inc
Declarar gdiplusToken&,ImageObject&,ImageWidth&,ImageHeight&,GraphicObject&
Declarar hPic&
Declarar imgThumb&
Declarar lngImage&
Declarar hBitmap&
Ventana 0,0-1024,786
Cls ~GetSysColor(~COLOR_3DFACE)
gdiplusToken& = InitGDIPlus()
hPic& = @Crear(hPic,-1,Bild.jpg)
~GdipCreateBitmapFromHBITMAP(hPic&,0,@Addr(lngImage&))
~GdipGetImageThumbnail(lngImage&,92,69,@Addr(imgThumb&),0,0)
~GdipCreateHBITMAPFromBitmap(imgThumb&,@Addr(hBitmap&))
DrawPic hBitmap&,50,50;0
hier bräuchte Yo nun algo, qué me una Adresse oder Array y dessen Größe ermittelt !!!
WaitInput
DeleteObject hPic&
DeleteObject hBitmap&
~GdipDisposeImage(imgThumb&)
~GdipDisposeImage(lngImage&)
ExitGDIPlus(gdiplusToken&)
End
|
| | | Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 02.02.2009 ▲ |
| |
| | | | - Página 2 - |
| |  Georg Hovenbitzer | ¡Hola Pascal,
Yo doch dijo, el es una interessante Möglichkeit  Zu deiner Cuestión si Grenzen son, hier el original Texto de el SQLite Homepage:
Supports terabyte-sized databases and gigabyte-sized strings and blobs.
Como ha uno más una Problema con Plattenplatz, como con el qué en el Blobs verstauen voluntad. Ein Nachteil ha el DLL ellos kann no verschlüsseln, qué aber veces otra vez con el Exportgesetze zusammen hängen dürfte. Aber Yo ya una Página gefunden el una Verschlüsselung en el Quellcode instalado es y uno el DLL neu Compilieren muss.
Nach Aufruf de SaveJpgToMem findet se el vollständige Code el neu erstellten JPG en PicData#. Seguro todavía verbesserungsfähig,aber así podría uno ya qué anfangen..
Lo klappt, lo klappt  Yo sehe no nötigen Verbesserung, como lo genau el Weg va como el VB Demo. Der ausgiebige Test kommt morgen y darauf freue Yo mich ya.
Super vielen Dank !! |
| | | Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 04.02.2009 ▲ |
| |
| |  Uwe ''Pascal'' Niemeier | Hi Personas!
Georg
Yo sehe no nötigen Verbesserung, como lo genau el Weg va como el VB Demo.
Das kann Yo no en me sitzen dejar 
Hier una verbesserte Versión, en total sólo una Stream verwendet se, el auch a Rüchverwandlung Daten > Bild herhält y al Programmende auch korrekterweise otra vez lejos se. Also quasi una Rundum-Sorglos-Paket, el nebenbei auch una praktische Función hat; lo läßt se como Prevista para verschieden Kompressionsraten en JPG uso  KompilierenMarcaSeparaciónwindow 0,0-600,500
$H windows.ph
--GDIPlus-Erweiterungen von Andreas Miethe
$H Functions_GDIPLUS.ph
$H GDIP_Imageging.ph
$I GDIP_Helper.inc
--Funktionen aus shlwapi.dll unter XP (SP3) nur indirekt per Ordinal erreichbar
var shlwapi&=~GetModulehandle(shlwapi.dll)
var SHCreateMemStream&=~GetProcAddress(shlwapi&,12)
var IStream_Write&=~GetProcAddress(shlwapi&,212)
var IStream_Reset&=~GetProcAddress(shlwapi&,213)
var IStream_Size&= ~GetProcAddress(shlwapi&,214)
var IStream_Read&= ~GetProcAddress(shlwapi&,184)
proc StreamRelease-------------------------------------StreamRelease
var VTable&=long(IStream&,0 )
var Method&=long(VTable&,8 )
call(Method&,IStream&)
endproc-------------------------------------------------------------
proc StreamToMem-----------------------------------------StreamToMem
declare Size&
call(IStream_Size&,IStream&,addr(Size&))
dim PicData#,Size&
call(IStream_Reset&,IStream&)
call(IStream_Read&,IStream&,PicData#,Size&)
endproc-------------------------------------------------------------
proc MemToStream-----------------------------------------MemToStream
call(IStream_Reset&,IStream&)
call(IStream_Write&,IStream&,PicData#,sizeof(PicData#))
endproc-------------------------------------------------------------
Proc SaveJpgToStream---------------------------------SaveJpgToStream
--Modifizierte Variante der SaveAsJPG-Prozedur von Andreas Miethe
Parameters Bitmap&,Quality&
Declare encoderCLSID#,result&
result& = 0
Dim encoderCLSID#,16
Declare encoderParameters#
Declare wTemp$,encoder#
wTemp$ = S2WS(~EncoderQuality)
Dim encoder#,16
IIDFromString(ADDR(wTemp$),encoder#)
Dim encoderParameters#,32
Long encoderParameters#,0 = 1
MoveMemory(encoderParameters#+4,encoder#,16)
Long encoderParameters#,20 = 1
Long encoderParameters#,24 = ~EncoderParameterValueTypeLong
Long encoderParameters#,28 = ADDR(Quality&)
If GetEncoderCLSID(image/jpeg,encoderCLSID#)
call(IStream_Reset&,IStream&)
~GdipSaveImageToStream(Bitmap&,IStream&,encoderCLSID#,encoderParameters#)
result& = 1
Endif
Dispose encoder#
Dispose encoderParameters#
Dispose encoderCLSID#
Return result&
EndProc-------------------------------------------------------------
external(ole32,CoInitialize,0)--OLE initialisieren
var Token&=InitGDIPlus()------------GDI+ initialisieren
usermessages 16---------------------WM_CLOSE abfangen
declare PicData#,IStream&--PicData# und IStream& global deklariert!
IStream&=call(SHCreateMemStream&,0,0)--Stream erzeugen
var Pic&=create(hPic,-1,C:1TestBild.jpg)--Demo-Bild (Pfad anpassen!)
declare Image&,Thumb&
~GdipCreateBitmapFromHBITMAP(Pic&,0,addr(Image&))--------Image von Bitmap
~GdipGetImageThumbnail(Image&,250,250,addr(Thumb&),0,0)--Thumb von Image (Größe 250*250)
~GdipDisposeImage(Image&)--------------------------------Image freigeben
deleteobject Pic&----------------------------------------Bitmap freigeben
SaveJpgToStream(Thumb&,5)----Thumb als JPG (schlechte Qualität) nach IStream&
StreamToMem()----------------JPG-Daten von IStream& nach PicData#
var LoQuality$=char$(PicData#,0,sizeof(PicData#))--PicData# als String zwischenspeichern
SaveJpgToStream(Thumb&,100)--Thumb als JPG (gute Qualität) nach IStream&
StreamToMem()----------------JPG-Daten von IStream& nach PicData#
var HiQuality$=char$(PicData#,0,sizeof(PicData#))--PicData# als String zwischenspeichern
declare Handle&,Bmp&
char PicData#,0=LoQuality$--Daten aus String nach PicData#
MemToStream()---------------Daten von PicData# nach IStream&
~GdipLoadImageFromStream(IStream&,addr(Handle&))----Image aus IStream&
~GdipCreateHBITMAPFromBitmap(Handle&,addr(Bmp&),0)--Bitmap aus Image
~GdipDisposeImage(Handle&)--------------------------Image freigeben
drawpic Bmp&,10,10;0--------------------------------Bitmap anzeigen
deleteobject Bmp&-----------------------------------Bitmap freigeben
char PicData#,0=HiQuality$--Daten aus String nach PicData#
MemToStream()---------------Daten von PicData# nach IStream&
~GdipLoadImageFromStream(IStream&,addr(Handle&))----Image aus IStream&
~GdipCreateHBITMAPFromBitmap(Handle&,addr(Bmp&),0)--Bitmap aus Image
~GdipDisposeImage(Handle&)--------------------------Image freigeben
drawpic Bmp&,270,10;0-------------------------------Bitmap anzeigen
deleteobject Bmp&-----------------------------------Bitmap freigeben
while 1
waitinput
case %umessage=16:break
endwhile
StreamRelease()---------------------Stream freigeben
external(ole32,CoUninitialize)--OLE aus
ExitGDIPlus(Token&)-----------------GDI+ de
PS: El Cuestión después de el maximalen Datenlänge bezog se eigendlich en el @Decode64() -Función, porque IF el así betonte. Damit ließe se JPG en DB nämlich auch para konventionelle DBs (Memo-Felder más o menos) nutzen.
SeeYou Pascal |
| | | | |
| |  |
| | | | |
| |  | Wollte tiempos de meiner Bmp-Expediente(64x64Pixel) el RGB-Werte auslesen. Das Bild ha 3 verschiedene waagerechte Farbstreifen(RGB). Lo kommen total falsche Werte 31 0 31, 227 0 227 usw.
Obwohl reine RGB-Werte kommen debería 255 0 0, 0 255 0, 0 0 255 zb.
window 30,30-500,500
$H Windows.ph
declarar bmi#,b#
declarar Pic$,Handle&,Neu&,wert&,hwin&
Ventana 20,20-200,200
hWin& = Crear(Ventana, %hWnd, Test, 250, 20, 650,500)
Pic$=test.bmp
Handle&=create(hPic,-1,Pic$)
struct bmpHEADER=Size&,Width&,Height&,Planes%,BitCount%,Compression&,SizeImage&,X#(24)
dim bmi#,bmpHEADER
bmi#.Size&=sizeof(bmi#)------------------Größe de BITMAPINFOHEADER
~GetDIBits(%hdc,Handle&,0,0,0,bmi#,0)--Dummy-Aufruf, en bmpHeader a füllen (Rückgabe: 1=OK)
imprimir sizeof(bmi#)
dim b#,bmi#.SizeImage&-----------------Zona para Bildinformationen (Pixel) bereitstellen
~GetDIBits(%hdc,Handle&,0,bmi#.Height&,b#,bmi#,0)--Eigendliche Bilddaten de Handle ermitteln
Neu&=~CreateDIBitmap(%hdc,bmi#,4,b#,bmi#,0)------Neue DIB con geänderten Farben erzeugen
startpaint hwin&
drawpic Neu&,10,10;0
endpaint
wert&=bmi#.SizeImage&
whileloop 0,wert&,4
imprimir byte(b#,&bucle),byte(b#,&bucle+1),byte(b#,&bucle+2)
sleep 10
endwhile
|
| | | | |
| |  Jörg Sellmeyer | Hast Usted porque el Mapa de bits ya con un externo Programa überprüft? Wenn Yo einfarbige Bitmaps einsetze, voluntad el Werte korrekt ausgegeben. Hier es mi Mapa de bits
 |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ...  | 05.03.2009 ▲ |
| |
| |  | El Werte Yo en me überprüft, haben todos valor 255 en R, G y B. Mit 2 Grafikprogrammen : Paintshop y Micrografx.
mfg |
| | | | |
| |  | En No. Zuerst kommt zwar 0 248 0 8x entonces otra vez 224 7 224 8x y 31 0 31 8x el a para schluss.
Zeig veces deine Ausleseprogramm.
mfg |
| | | | |
| |  | Wohlbemerkt el Werte imho no en el Formato RGB pero BGR vorliegen. |
| | | | |
| |  | jugando ahora en el Test ningún papel, derweil jede Farbe valor 255 einzeln ha. Zumindest muss el eigentlich con uno pequeño Schwankung seperat rauskommen y no esta Edición oben. Tal vez mi Aufrufreihenfolge falso...
mfg |
| | | | |
| |  Jörg Sellmeyer | Peter Bierbachh
En No. Zuerst kommt zwar 0 248 0 8x entonces otra vez 224 7 224 8x y 31 0 31 8x el a para schluss.
Zeig veces deine Ausleseprogramm.
mfg
Welches Ausleseprogramm? Yo habs con su Code ausgelesen. El Mapa de bits es con CorelDraw erstellt. Zeig doch veces Su Mapa de bits. |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ...  | 05.03.2009 ▲ |
| |
| |  | Im Anhang son el Mapa de bits.
mfg |
| | | | |
| |  E.T. | Eben (wegen todavía-no-schlafen-puede ) veces probiert: Test1 y Test2.bmp zeigen en me jeweils 255 (Rest 0) para el jeweilige Farbe a (Photoshop y AutoCad). También el bmp de Jörg.
El en el o.g. Quellcode verwendete Test.bmp es probablemente no esta oder ha beim hochladen el Name geändert ?? |
| | | Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 06.03.2009 ▲ |
| |
|
RespuestaTema opciones | 20.223 Views |
ThemeninformationenDieses Thema ha 7 subscriber: |