FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Fichiers images (BMP et JPG) Emptypar Pedro Aujourd'hui à 8:08

» Un autre pense-bête...
Fichiers images (BMP et JPG) Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Fichiers images (BMP et JPG) Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Fichiers images (BMP et JPG) Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Fichiers images (BMP et JPG) Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Fichiers images (BMP et JPG) Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Fichiers images (BMP et JPG) Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Fichiers images (BMP et JPG) Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Fichiers images (BMP et JPG) Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Fichiers images (BMP et JPG) Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Fichiers images (BMP et JPG) Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Fichiers images (BMP et JPG) Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Fichiers images (BMP et JPG) Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Fichiers images (BMP et JPG) Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Fichiers images (BMP et JPG) Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment :
Code promo Nike : -25% dès 50€ ...
Voir le deal

 

 Fichiers images (BMP et JPG)

Aller en bas 
AuteurMessage
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Fichiers images (BMP et JPG) Empty
MessageSujet: Fichiers images (BMP et JPG)   Fichiers images (BMP et JPG) EmptyLun 22 Mar 2010 - 16:24

Suite au topic de jjn4 (Album photos), je me suis repenché sur les fichiers images. et leur utilisation sous Panoramic.

Autant le format bmp est bien connu, autant le format jpg est compliqué.
On ne s'intéresse ici qu'aux images bmp les plus courantes, en 16 millions de couleurs (3 ou 4 octets par pixel).

Rappel de la structure d'un fichier bmp:
Code:
*** images BMP en 16 M de couleurs
    (3 ou 4 octets par pixel = couleur du pixel, + 0 éventuel) ***
============================================================================
- Structure de l'en-tête BMP (54 octets) -
Dec  Hex  Lg                 
--- ----- --
 0  00-01  2  "BM"                 
 2  02-05  4  Taille totale fichier
 6  06-09  4  Réservé (=0000)     
10  0A-0D  4  Offset des datas image
14  0E-11  4  Taille du header (?)     
18  12-15  4  Largeur image (pixels) -> w  (poids faibles d'abord)
22  16-19  4  Hauteur image (pixels) -> h  (... id...)
26  1A-1B  2  Nombre de plans     
28  1C-1D  2  Nb de bits par pixel  -> bpp
30  1E-21  4  Type de compression
34  22-25  4  Taille de l'image
38  26-29  4  Largeur (pixels/mètre) -> dw
42  2A-2D  4  Hauteur (pixels/mètre) -> dh
46  2E-31  4  Nombre de couleurs
50  32-35  4  Couleurs importantes
54  36 ..      .... Datas image ....

============================================================================
 ****** valeur Dec = adresse dans le fichier pour FILEBIN_POSITION ******
 Données image: en commençant par le bas de limage, de gauche à droite.
 3 (24 bits/pixel) ou 4 (32 bits/pixel) octets par pixels (bleu, vert, rouge
 + 0 éventuel). Chaque ligne est complétée par 0 à 3 octets à 0
 (nombre = reste de la division par 4 du nombre de pixels par ligne).
 Taille de l'en-tête (&0E)  = 54 octets (= offset datas, en &0A)
 Taille d'une ligne        = (3 ou 4)* w + (w MOD 4) octets.
 Taille de l'image (&22)    = Taille ligne * h
 Taille totale (&02)        = Taille image + Taille en-tête
============================================================================

Octets par pixel:
opp = bpp\8

Définition de l'image en pixels par pouce (dpi):
dpw = CINT(.0254 * dw)
dph = CINT(.0254 * dh)

Dimensions de l'image, en centimètres:
largeur = dw * w / 100
hauteur = dh * h / 100

SOUS-PROGRAMMES:

Dimensions en pixels d'une image JPG:

Astuce: on convertit momentanément l'image au format bmp, le temps de lire les dimensions.
On considère ici que l'image ne dépasse pas 65535 pixels de côté, ce qui est largement suffisant.
Code:
' Dimensions d'une image jpg
DIM f$, fm$, i, w%, h%, v%(8)
f$ = "C:\TEMP\P1010932.jpg": ' image dont on cherche les dimensions
fm$ = "Z:\Pict.bmp": ' fichier de manoeuvre

PICTURE 1: HIDE 1: FILE_LOAD 1, f$: FILE_SAVE 1, fm$: DELETE 1
FILEBIN_OPEN_READ 1, fm$: FILEBIN_POSITION 1, 18: ' en 18, 4 + 4 octets
FOR i = 1 TO 8: FILEBIN_READ 1, v%(i): NEXT i
FILEBIN_CLOSE 1: FILE_DELETE fm$
w% = v%(1) + 256*v%(2): h% = v%(5) + 256*v%(6): ' 2 octets (<65536 pixels)
Print w%: print h%: ' pour voir
END

Caractéristiques d'un fichier image bmp:

Code:
FILEBIN_OPEN_READ 1, fb$: ' ouverture du fichier bmp
pos = 2: GOSUB Val4: tf = v: ' taille totale du fichier
pos = 10: GOSUB Val4: lh% = v: ' taille du header (début des datas image)
pos = 18: GOSUB Val4: w% = v: ' largeur image, en pixels
pos = 22: GOSUB Val4: h% = v: ' hauteur image, en pixels
pos = 28: GOSUB Val2: bpp% = v: ' nb de bits par pixel image
opp% = INT(bpp%/8): ' nb d'octets par pixel image
ll% = opp% * w%: ' longueur d'une ligne image, en octets
FILEBIN_CLOSE 1

Val4:
' -> v% = valeur des 4 octets à la position pos
FILEBIN_POSITION 1, pos
FOR i = 1 TO 4: FILEBIN_READ 1, d%(i): NEXT i
v = d%(1) + 256*d%(2) + 256*256*d%(3) + 256*256*256*d%(4)
RETURN

Val2:
' -> v% = valeur des 4 octets à la position pos
FILEBIN_POSITION 1, pos
FOR i = 1 TO 2: FILEBIN_READ 1, d%(i): NEXT i
v = d%(1) + 256*d%(2)
RETURN

Adresse dans le fichier bmp et couleur d'un pixel donné par ses coordonnées x et y


Rappel:
- les lignes d'image sont en ordre inverse dans le fichier (ligne y=0 de l'image en bas du fichier)
- les couleurs sont rangées sous la forme b, g, r (et non rgb comme habituellement)
(on considère que le fichier est déjà ouvert: FILEBIN_OPEN_READ 1, et qu'on connaît tf, ll%, opp%: voir ci-dessus)

Code:
Posxy:
' Position dans le fichier image et couleur du pixel de coordonnées x% et y%
pos = tf - (y%+1) * ll% + x% * opp%
FILEBIN_POSITION 1, pos
FILEBIN_READ 1, b: FILEBIN_READ 1, g: FILEBIN_READ 1, r
RETURN

Malheureusement, je n'ai pas trouvé le moyen d'écrire dans un fichier binaire, pour pouvoir non seulement lire, mais modifier la couleur d'un pixel ou d'une série de pixels dans le fichier image (voir dans la rubrique bugs: écrire dans un fichier binaire).
Revenir en haut Aller en bas
Invité
Invité




Fichiers images (BMP et JPG) Empty
MessageSujet: Re: Fichiers images (BMP et JPG)   Fichiers images (BMP et JPG) EmptyLun 22 Mar 2010 - 18:47

Salut JL35
Une chose que je comprend pas.Toi qui utilise d'autre basic, tu ne peux pas faire une routine dans le langage que tu connais, et te servir d'execute_wait pour transposer. Il me semble qu'il y a un compilateur pour je" crois Qbasic (si c'est celui-là que tu utilise je crois). Je ne sais pas si dans ce langage, il il y des possibilités de copier/coller.
Revenir en haut Aller en bas
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Fichiers images (BMP et JPG) Empty
MessageSujet: Re: Fichiers images (BMP et JPG)   Fichiers images (BMP et JPG) EmptyLun 22 Mar 2010 - 19:00

Bonsoir cosmos,
Bien sûr je peux faire tout ça en QBasic ou QuickBasic (=QBasic compilable), et je ne m'en suis pas privé dans le passé, les fonctions d'accès aux fichiers sont bien plus faciles à utiliser et plus complètes.
Et je pourrais facilement faire un module externe pour les accès disque.

Mais justement je voudrais pouvoir tout faire en Panoramic et éviter d'avoir à appeler un autre module, pour que tout soit intégré dans le source, c'était justement le but de mon intervention ici.
Revenir en haut Aller en bas
Invité
Invité




Fichiers images (BMP et JPG) Empty
MessageSujet: Re: Fichiers images (BMP et JPG)   Fichiers images (BMP et JPG) EmptyLun 22 Mar 2010 - 19:36

Ok d'accord. Mais Jack n'est pas Superman. La majorité d'entre vous définissez la priorité sur les jeux, et je pense que Jack aussi, donc pour ce qui serait normalement du basic (dans le sens habituel), cela passe au second plan.
Revenir en haut Aller en bas
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Fichiers images (BMP et JPG) Empty
MessageSujet: Re: Fichiers images (BMP et JPG)   Fichiers images (BMP et JPG) EmptyLun 22 Mar 2010 - 20:59

Je ne dis pas que c'est une priorité. Mais ça me paraît quand même des fonctions élémentaires, pouvoir lire et écrire dans un fichier, texte ou binaire.

Et en ce qui me concerne ce n'est pas du tout pour des jeux, mais pour de la gestion d'images (par exemple issues d'apn, ou pour des graphismes).
Ou bien pour pouvoir accéder à n'importe quel fichier, quel qu'il soit.

En QBasic il y avait une seule fonction OPEN, il suffisait de préciser dans les paramètres si c'était texte ou binaire, pour lecture ou écriture, de un seul ou plusieurs octets. Et une seule fonction CLOSE. Et je regrette ces facilités.

C'est peut-être plus sécurisant en Panoramic, mais si je conçois qu'on doive prendre des précautions vis-à-vis de l'utilisateur du programme, j'estime que le programmeur lui doit pouvoir tout faire, à ses risques et périls.

Je renvoie à mon post de novembre (2009 ?): https://panoramic.1fr1.net/vos-souhaits-d-amelioration-de-panoramic-f8/gestion-de-fichiers-panoramic-versus-qbasic-t404.htm?highlight=fichiers
Revenir en haut Aller en bas
Contenu sponsorisé





Fichiers images (BMP et JPG) Empty
MessageSujet: Re: Fichiers images (BMP et JPG)   Fichiers images (BMP et JPG) Empty

Revenir en haut Aller en bas
 
Fichiers images (BMP et JPG)
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Images fractales
» Traitement d'images (2)
» Retouche d'images
» Bricoler des images
» Assemblage d'images

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: