Forum | | | | - page 1 - |
| Georg Hovenbitzer | allô zusammen,
mich erdrückt justement une riesige Wissenslücke et je hoffe vous pouvez mir weiterhelfen. but ist es, un Bild trop magasin, es trop einem Thumbnail trop verkleiner et ensuite dans einer banque de données abzulegen. mon Problem ist eh bien qui partie entre Thumbnail et banque de données et là qui, comment je à une Speicheradresse / Array des Bildes et dessen Taille viens: comme Présentation habe je cela geile GDI+ Demo de Andreas pris.
$H \windows.ph
$H \includes\Functions_GDIPLUS.ph
$H \includes\GDIP_Imageging.ph
$I \includes\GDIP_Helper.inc
Déclarer gdiplusToken&,ImageObject&,ImageWidth&,ImageHeight&,GraphicObject&
Déclarer hPic&
Déclarer imgThumb&
Déclarer lngImage&
Déclarer hBitmap&
Fenêtre 0,0-1024,786
Cls ~GetSysColor(~COLOR_3DFACE)
gdiplusToken& = InitGDIPlus()
hPic& = @Créer(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
ici bräuchte je eh bien quelque chose, quoi mir une Adresse ou bien Array et dessen Taille ermittelt !!!
WaitInput
DeleteObject hPic&
DeleteObject hBitmap&
~GdipDisposeImage(imgThumb&)
~GdipDisposeImage(lngImage&)
ExitGDIPlus(gdiplusToken&)
Fin
|
| | | Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 02.02.2009 ▲ |
| |
| | | | - page 2 - |
| | Georg Hovenbitzer | allô Pascal,
j'ai doch dit, c'est une interessante Possibilité trop deiner Frage si es Grenzen gibt, ici qui original Text de qui SQLite Page d'accueil:
Supports terabyte-sized databases and gigabyte-sized strings and blobs.
là hat on plutôt un Problem avec Plattenplatz, comme avec dem quoi on dans qui Blobs verstauen veux. un le tort hat qui DLL il peut pas verschlüsseln, quoi mais la fois wieder avec den Exportgesetze zusammen hängen pourrait. mais j'ai déjà une page trouvé qui une Verschlüsselung im Quellcode incorporé ist et on sich qui DLL récente Compilieren muss.
Pour Aufruf de SaveJpgToMem findet sich qui vollständige Code qui récente erstellten JPG dans PicData#. sûrement encore verbesserungsfähig,mais avec cela pourrait on déjà quoi anfangen..
Es klappt, es klappt je vois aucun nötigen amélioration, là es oui c'est ca den Weg allez comment cela VB Demo. qui ausgiebige Test venez demain et puis suis je mich déjà.
Super vielen Dank !! |
| | | Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 04.02.2009 ▲ |
| |
| | Uwe ''Pascal'' Niemeier | Hi gens!
Georg
je vois aucun nötigen amélioration, là es oui c'est ca den Weg allez comment cela VB Demo.
cela peux je pas sur mir être assis laisser
ici une verbesserte Version, chez qui en tout seulement un Stream verwendet wird, qui aussi zur Rüchverwandlung données > Bild herhält et am Programmende aussi korrekterweise wieder entfernt wird. alors quasi un Rundum-Sorglos-paquet, cela nebenbei aussi une praktische Funktion hat; es läßt sich comme Vorschau pour verschieden Kompressionsraten chez JPG verwenden KompilierenMarqueSéparationwindow 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+ aus
PS: qui Frage pour qui maximalen Datenlänge bezog sich eigendlich sur qui @Decode64() -Funktion, weil iF cela so betonte. avec cela ließe sich JPG dans DB nämlich aussi pour konventionelle DBs (Memo-Felder ou bien so) nutzen.
SeeYou Pascal |
| | | | |
| | |
| | | | |
| | | voulais la fois de meiner Bmp-Dossier(64x64Pixel) qui RGB-Werte auslesen. cela Bild hat 3 verschiedene waagerechte Farbstreifen(RGB). Es venons total falsche Werte 31 0 31, 227 0 227 usw.
quoique reine RGB-Werte venons devoir 255 0 0, 0 255 0, 0 0 255 zb.
window 30,30-500,500
$H Windows.ph
declare bmi#,b#
declare Pic$,Handle&,Neu&,wert&,hwin&
Fenêtre 20,20-200,200
hWin& = Créer(Fenêtre, %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#)------------------Taille de BITMAPINFOHEADER
~GetDIBits(%hdc,Handle&,0,0,0,bmi#,0)--Dummy-Aufruf, um bmpHeader trop füllen (Rückgabe: 1=OK)
imprimer sizeof(bmi#)
dim b#,bmi#.SizeImage&-----------------Bereich pour Bildinformationen (Pixel) bereitstellen
~GetDIBits(%hdc,Handle&,0,bmi#.Height&,b#,bmi#,0)--Eigendliche Bilddaten aus Handle ermitteln
Neu&=~CreateDIBitmap(%hdc,bmi#,4,b#,bmi#,0)------Neue DIB avec modifié Farben erzeugen
startpaint hwin&
drawpic Neu&,10,10;0
endpaint
wert&=bmi#.SizeImage&
whileloop 0,wert&,4
imprimer byte(b#,&loop),byte(b#,&loop+1),byte(b#,&loop+2)
sleep 10
endwhile
|
| | | | |
| | Jörg Sellmeyer | la hâte Du car qui Bitmap déjà avec einem externe Programme überprüft? si je einfarbige Bitmaps einsetze, volonté qui Werte korrekt ausgegeben. ici ist mon Bitmap
|
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 05.03.2009 ▲ |
| |
| | | qui Werte habe je chez mir überprüft, avons alle la valeur 255 dans R, G et B. avec 2 Grafikprogrammen : Paintshop et Micrografx.
mfg |
| | | | |
| | | chez Je ne. d'abord venez zwar 0 248 0 8x ensuite wieder 224 7 224 8x et 31 0 31 8x cela jusqu'à zum schluss.
Zeig la fois deine Ausleseprogramm.
mfg |
| | | | |
| | | Wohlbemerkt qui Werte imho pas im Format RGB mais BGR vorliegen. |
| | | | |
| | | jouer maintenant im Test aucun rôle, derweil chacun la couleur la valeur 255 einzeln hat. Zumindest muss cela eigentlich avec einer kleinen Schwankung seperat rauskommen et pas cet Ausgabe dessus. Peut-être mon Aufrufreihenfolge faux...
mfg |
| | | | |
| | Jörg Sellmeyer | Peter Bierbachh
chez Je ne. d'abord venez zwar 0 248 0 8x ensuite wieder 224 7 224 8x et 31 0 31 8x cela jusqu'à zum schluss.
Zeig la fois deine Ausleseprogramm.
mfg
Welches Ausleseprogramm? je habs avec Deinem Code ausgelesen. qui Bitmap ist avec CorelDraw erstellt. Zeig doch la fois Votre Bitmap. |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 05.03.2009 ▲ |
| |
| | | Im Anhang sommes qui Bitmap.
mfg |
| | | | |
| | E.T. | plan (à cause de encore-pas-dormir-peut ) la fois probiert: Test1 et Test2.bmp montrer chez mir jeweils 255 (reste 0) pour qui jeweilige la couleur à (Photoshop et AutoCad). Ebenso qui bmp de Jörg.
qui im o.g. Quellcode verwendete Test.bmp ist wohl pas dabei ou bien hat beim hochladen den nom 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 ▲ |
| |
|
répondreOptions du sujet | 19.298 Views |
Themeninformationencet Thema hat 7 participant: |