Page 2 sur 2

Re: Problem ! Convertir une image bitmap en flux binaire!!

Publié : jeu. 17/sept./2015 1:06
par celtic88
je suis pas fainéant aux terme exacte de mot mai je cherche le facile pour me focalise sur d autre chose plus important
tu pourrais écrire
alors tu ma pas bien compris je v envoyer l image son avoir stocker dans l hdd
Si j'ai choisi PureBasic, c'est pour sa simplicité d'utilisation et le temps gagner à coder. J'ai pu me passer des API durant des années et ça me va bien.
tree bien c est t on t sort comme ca alors tampi pour toi lol :P ,,, ps dans l a vie il faux chercher a évoluer et pour koi pas apprendre le c++ sert que pb est tree fort mais a la base pb lui mem est programmer en c ;)

Re: Problem ! Convertir une image bitmap en flux binaire!!

Publié : jeu. 17/sept./2015 1:16
par falsam
celtic88 a écrit :dans l a vie il faux chercher a évoluer et pour koi pas apprendre le c++
Je pense que j'ai plutôt pas mal évoluer : Basic, Assembleur, GAP, Cobol, PL1, Pascal, C, Paradox, Windev, J'ai travaillé dans des équipes de développement de plus de 20 personnes.
Je ne frime pas hein ? je montre juste que j'ai évolué dans mes langages. Avec Pure Basic je me détend.

@TazNormand qui va très bien comprendre ce qui suit : Je ne suis pas à retraite pti con :mrgreen:

Re: Problem ! Convertir une image bitmap en flux binaire!!

Publié : jeu. 17/sept./2015 1:25
par celtic88
loool dsl car je t connais pas et j ai peur de faire des erreur sur ta personne,, mai tu peu pas ME DIR




"pour quoi t utilise pas les fonction pb" ,,,, :D c est mon tour d apprendre les api plus et de devenir comme toi :)

Re: Problem ! Convertir une image bitmap en flux binaire!!

Publié : jeu. 17/sept./2015 1:30
par falsam
Le principe que j'ai en tête est de capturer l'image de ton écran et de mettre le résultat dans une structure JSON que j’enverrais à un script Php hébergé sur un serveur distant.

Re: Problem ! Convertir une image bitmap en flux binaire!!

Publié : jeu. 17/sept./2015 8:22
par TazNormand
Hors sujet=ON
@falsam : j'ai rien dit moi, je respecte juste ton grand age :twisted:
Hors-sujet=OFF

Re: Problem ! Convertir une image bitmap en flux binaire!!

Publié : jeu. 17/sept./2015 8:56
par Kwai chang caine
Autrement ya la solution pro, qu'utilise tous les logiciels de ce type, fluidité garantie :wink:
Le protocole RFB (Remote Frame Buffer) a été fait pour ça
https://fr.m.wikipedia.org/wiki/Remote_Frame_Buffer

Infratec a même commencé un code à ce sujet
http://www.purebasic.fr/english/viewtop ... &hilit=vnc

Re: Problem ! Convertir une image bitmap en flux binaire!!

Publié : jeu. 17/sept./2015 9:17
par celtic88
@falsam, mai serieu tu me demande a moi pour quoi je complique les chose et par contre tu me propose de faire d json et php.... tout sa pour un simple transfert d un image entre client et serveur j ai fait plus lourd dans ma vie :( .

ps Image :lol:
de plus , ne considère pas que parce que nous utilisons Purebasic, en priorité , on ne saurai pas utiliser les Apis ...
faudrai pas nous prendre pour des jambons quand meme ;)
vraiment chuis dsl pour le mal entendant !!c est loin de moi c je vise ca! ,,, et pour le code c est bon j ai trouver la solution lit le commentaire n 8 et remerciement a vous ça ma fait plaisir tous vous rep. :)

Re: Problem ! Convertir une image bitmap en flux binaire!!

Publié : jeu. 17/sept./2015 9:30
par celtic88
@Kwai chang caine, tres tres intéressant merci.

Re: Problem ! Convertir une image bitmap en flux binaire!!

Publié : jeu. 17/sept./2015 9:37
par Anonyme2
Spock a écrit :le specialiste de GDI ici c'est Denis
en esperant qu'il verra ton message :)

GDI est la librairie Microsoft pour la 2D.
GDI+ est une autre librairie de Microsoft qui pallie les manques de GDI et qui permet une gestion très intéressante de formats d'image en particulier.

Les spécialistes ici c'est Microsoft :mrgreen:

@celtic88 :

Essaye au moins de compiler avec le debugger car il y a des erreurs.

Ton code fonctionne en 32/64 bits mais tu dois rectifier ceci:

Tu mélanges les mémoires allouées par PB et celles obtenues par les API

Code : Tout sélectionner

*Binimage=AllocateMemory(sizeimage)
*Binimage=GlobalLock_(*hMemory)
ca ne va pas, tu utilises le même pointeur, le pointeur PB est perdu et ca plante ici

Code : Tout sélectionner

FreeMemory(*Binimage)
Tu utilises l'API GlobalLock_(), tu dois donc lorsque les opérations sont terminées, utiliser l'API GlobalUnlock_() avant de libérer la mémoire avec les API microsoft et par FreeMemory() de PB.

Si tu veux un code stable, tu dois toujours, toujours, toujours, toujours, toujours, toujours, toujours, toujours,
tester le retour des fonctions PB et des API sinon tu risques de faire planter, c'est obligatoire si tu manipules les fonctions 2D de PB, des mémoires, stream, objet GDI+ etc.

Re: Problem ! Convertir une image bitmap en flux binaire!!

Publié : jeu. 17/sept./2015 9:50
par falsam
celtic88 a écrit :@falsam, mai serieu tu me demande a moi pour quoi je complique les chose et par contre tu me propose de faire d json et php.... tout sa pour un simple transfert d un image entre client et serveur j ai fait plus lourd dans ma vie
Petite question : Pour visualiser tes images sur le web, tu utilises quel langage ?
Une autre question : Ton image est stockée de quel maniére sur le serveur avant affichage ?
celtic88 a écrit :et pour le code c est bon j ai trouver la solution
Content pour toi mais répond quand même à ces deux questions^^

Re: Problem ! Convertir une image bitmap en flux binaire!!

Publié : jeu. 17/sept./2015 10:42
par Anonyme2
Spock a écrit :
Denis a écrit :
Spock a écrit :le specialiste de GDI ici c'est Denis
en esperant qu'il verra ton message :)

GDI est la librairie Microsoft pour la 2D.
GDI+ est une autre librairie de Microsoft qui pallie les manques de GDI et qui permet une gestion très intéressante de formats d'image en particulier.

Les spécialistes ici c'est Microsoft :mrgreen:
arf ! t'es quand meme ici celui qui a le plus de compétences en la matiere ! :)
Je vous encourage tous à utiliser GDI+ au moins pour l'instant pour les images PNG.

La librairie lib_PNG que PB utilise plante sur une nombre très limité d'images PNG.
J'utilise donc GDI+ pour mes images dans mon projet et avec GDI+ je n'ai pas encore eu de plantage avec les PNG.
Le dernier gros plantage de PureIconManager est justement du à une image PNG ouverte avec PB.

J'ai scanné Win10 et j'ai retrouvé des images PNG qui plantent avec la lib lib_PNG.

D'ailleurs, axialis plante avec ces images, RealWorld Icon Editor aussi qui sont de très bons éditeurs d'icônes. Les 2 utilisent la lib lib_PNG.

Ce qui est dommage, c'est que PB ne permet pas avec la lib lib_PNG, d'utiliser les fonctions toutes prêtes.
Avec GDI+, on a plein de petites fonctions que j'utilise (déterminer si une image utilise la transparence = couche alpha, la résolution horizontale ou verticale d'une image etc.).

Re: Problem ! Convertir une image bitmap en flux binaire!!

Publié : jeu. 17/sept./2015 10:54
par celtic88
Denis a écrit :
Spock a écrit :le specialiste de GDI ici c'est Denis
en esperant qu'il verra ton message :)

GDI est la librairie Microsoft pour la 2D.
GDI+ est une autre librairie de Microsoft qui pallie les manques de GDI et qui permet une gestion très intéressante de formats d'image en particulier.

Les spécialistes ici c'est Microsoft :mrgreen:

@celtic88 :

Essaye au moins de compiler avec le debugger car il y a des erreurs.

Ton code fonctionne en 32/64 bits mais tu dois rectifier ceci:

Tu mélanges les mémoires allouées par PB et celles obtenues par les API

Code : Tout sélectionner

*Binimage=AllocateMemory(sizeimage)
*Binimage=GlobalLock_(*hMemory)
ca ne va pas, tu utilises le même pointeur, le pointeur PB est perdu et ca plante ici

Code : Tout sélectionner

FreeMemory(*Binimage)
Tu utilises l'API GlobalLock_(), tu dois donc lorsque les opérations sont terminées, utiliser l'API GlobalUnlock_() avant de libérer la mémoire avec les API microsoft et par FreeMemory() de PB.

Si tu veux un code stable, tu dois toujours, toujours, toujours, toujours, toujours, toujours, toujours, toujours,
tester le retour des fonctions PB et des API sinon tu risques de faire planter, c'est obligatoire si tu manipules les fonctions 2D de PB, des mémoires, stream, objet GDI+ etc.

oh merci bcp, oui c'est vrais pourquoi j ai ajouté "AllocateMemory(sizeimage)" bizarre :roll:

voila mon final code c est j ai bien compris le scénario ce sera comme ça!!

Code : Tout sélectionner

Prototype GdiplusStartup(*a,b,c)
Prototype GdipSaveImageToStream(*a,*b,c,d)
Prototype GdipDisposeImage(*a)
Prototype GdiplusShutdown(*a)
Prototype GdipCreateBitmapFromHBITMAP(a, b, *c)
Prototype GdipGetImageWidth(a,*b)
Prototype GdipGetImageHeight(a,*b)
Prototype GdipCloneBitmapArea(a.b,c.d,e.f,g.h,k,*l,*m)
Prototype GdipSaveImageToFile(a,b.c,*d,*e)

lib_gdiplus = OpenLibrary(#PB_Any, "GDIPlus.dll") 
GdiplusStartup_.GdiplusStartup=GetFunction(lib_gdiplus,"GdiplusStartup")
GdipSaveImageToStream_.GdipSaveImageToStream=GetFunction(lib_gdiplus,"GdipSaveImageToStream")
GdipDisposeImage_.GdipDisposeImage=GetFunction(lib_gdiplus,"GdipDisposeImage")
GdiplusShutdown_.GdiplusShutdown=GetFunction(lib_gdiplus,"GdiplusShutdown")
GdipCreateBitmapFromHBITMAP_.GdipCreateBitmapFromHBITMAP=GetFunction(lib_gdiplus,"GdipCreateBitmapFromHBITMAP")
GdipGetImageWidth_.GdipGetImageWidth=GetFunction(lib_gdiplus,"GdipGetImageWidth")
GdipGetImageHeight_.GdipGetImageHeight=GetFunction(lib_gdiplus,"GdipGetImageHeight")
GdipCloneBitmapArea_.GdipCloneBitmapArea=GetFunction(lib_gdiplus,"GdipCloneBitmapArea")
GdipSaveImageToFile_.GdipSaveImageToFile=GetFunction(lib_gdiplus,"GdipSaveImageToFile")

Structure GdiplusStartupInput 
  GdiPlusVersion.l 
  *DebugEventCallback.DEBUG_EVENT
  SuppressBackgroundThread.l 
  SuppressExternalCodecs.l 
EndStructure 
Structure EncoderParameter
  Guid.GUID
  NumberOfValues.l
  Type.l
  Value.l
EndStructure
Structure EncoderParameters
  Count.l
  Parameter.EncoderParameter[28]
EndStructure

CreateImage(0, 640,640)
StartDrawing(ImageOutput(0))
Box(0,0,640,640,#White)
Circle(319,319,319,#Blue)
Circle(319,319,219,#Green)
Circle(319,319,119,#Yellow)
StopDrawing()

GdiplusStartupInput.GdiplusStartupInput\GdiPlusVersion=1

Define *token
GdiplusStartup_(@*token, @GdiplusStartupInput,#NUL)

Define image
GdipCreateBitmapFromHBITMAP_(ImageID(0), 0, @*image)
FreeImage(0)

Define xw,xy
GdipGetImageWidth_(*image,@xw)
GdipGetImageHeight_(*image,@xy)

Debug Str(xw) +" X "+ Str(xy)

With encoderparams.EncoderParameters
  \Count = 1
  \Parameter[0]\Type = 4
  \Parameter[0]\NumberOfValues = 1
  \parameter[0]\Value = @"100"
EndWith
CopyMemory(?clsid_EncoderQuality, encoderparams\parameter[0]\Guid, SizeOf(GUID))

;GdipSaveImageToFile_(*image,"C:\Users\larbi\Desktop\hhh.jpg",?clsid_jpeg, @encoderparams)

Define *IStream
CreateStreamOnHGlobal_(#NUL,#True,@*IStream)

GdipSaveImageToStream_(*image,*IStream,?clsid_jpeg, @encoderparams)

GdipDisposeImage_(*image)

Define *hMemory
GetHGlobalFromStream_(*IStream,@*hMemory)

sizeimage= GlobalSize_(*hMemory)

Debug sizeimage

;*Binimage=AllocateMemory(sizeimage)
*Binimage=GlobalLock_(*hMemory)

tVARIANT.VARIANT
DispCallFunc_(*IStream,16,4,23,0,0,0,@tVARIANT)

DESKTOP_dir.s=Space(#MAX_PATH)
SHGetSpecialFolderPath_(#Null,@DESKTOP_dir,#CSIDL_DESKTOP,#False)

DESKTOP_dir+"\hhh.jpg"
Debug Desktop_dir

imgpath=OpenFile(#PB_Any,Desktop_dir)
WriteData(imgpath,*Binimage,sizeimage)
CloseFile(imgpath)

GlobalUnlock_(*Binimage)
GlobalFree_(*hMemory)
GdiplusShutdown_(*token)
CloseLibrary(lib_gdiplus)

;FreeMemory(*Binimage)

DataSection
  clsid_jpeg: ; clsid for jpeg image format
  Data.l $557CF401
  Data.w $1A04
  Data.w $11D3
  Data.b $9A,$73,$00,$00,$F8,$1E,$F3,$2E
  
  clsid_EncoderQuality:
  Data.l $1D5BE4B5
  Data.w $FA4A
  Data.w $452D
  Data.b $9C,$DD,$5D,$B3,$51,$05,$E7,$EB
EndDataSection
@denis est le rois de Gdiplus respect mec :)

Re: Problem ! Convertir une image bitmap en flux binaire!!

Publié : jeu. 17/sept./2015 11:22
par celtic88
falsam a écrit :
celtic88 a écrit :@falsam, mai serieu tu me demande a moi pour quoi je complique les chose et par contre tu me propose de faire d json et php.... tout sa pour un simple transfert d un image entre client et serveur j ai fait plus lourd dans ma vie
Petite question : Pour visualiser tes images sur le web, tu utilises quel langage ?
Une autre question : Ton image est stockée de quel maniére sur le serveur avant affichage ?
celtic88 a écrit :et pour le code c est bon j ai trouver la solution
Content pour toi mais répond quand même à ces deux questions^^
pour quoi doisje visualiser mes images sur web ? mon programme est deux application lun est server et l autr est client .

Re: Problem ! Convertir une image bitmap en flux binaire!!

Publié : jeu. 17/sept./2015 11:28
par falsam
celtic88 a écrit :pour quoi doisje visualiser mes images sur web ? mon programme est deux application lun est server et l autr est client .
Ok on n'en parle plus :wink:

Re: Problem ! Convertir une image bitmap en flux binaire!!

Publié : jeu. 17/sept./2015 11:31
par celtic88
falsam a écrit :
celtic88 a écrit :pour quoi doisje visualiser mes images sur web ? mon programme est deux application lun est server et l autr est client .
Ok on n'en parle plus :wink:
:D oky merci falsam :)