Problem ! Convertir une image bitmap en flux binaire!!

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

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

Message 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 ;)
Dernière modification par celtic88 le jeu. 17/sept./2015 1:16, modifié 1 fois.
.....i Love Pb :)
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

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

Message 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:
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

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

Message 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 :)
.....i Love Pb :)
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

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

Message 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.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
TazNormand
Messages : 1297
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

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

Message par TazNormand »

Hors sujet=ON
@falsam : j'ai rien dit moi, je respecte juste ton grand age :twisted:
Hors-sujet=OFF
Image
Image
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

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

Message 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
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

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

Message 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. :)
.....i Love Pb :)
Avatar de l’utilisateur
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

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

Message par celtic88 »

@Kwai chang caine, tres tres intéressant merci.
.....i Love Pb :)
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

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

Message 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.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

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

Message 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^^
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

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

Message 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.).
Avatar de l’utilisateur
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

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

Message 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 :)
.....i Love Pb :)
Avatar de l’utilisateur
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

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

Message 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 .
.....i Love Pb :)
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

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

Message 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:
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

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

Message 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 :)
.....i Love Pb :)
Répondre