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
» Gestion d'un système client-serveur.
Fichiers images (BMP et JPG) Emptypar Klaus Ven 17 Mai 2024 - 14:02

» item_index(résolu)
Fichiers images (BMP et JPG) Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
Fichiers images (BMP et JPG) Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
Fichiers images (BMP et JPG) Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Fichiers images (BMP et JPG) Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
Fichiers images (BMP et JPG) Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
Fichiers images (BMP et JPG) Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Fichiers images (BMP et JPG) Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Fichiers images (BMP et JPG) Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Fichiers images (BMP et JPG) Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Fichiers images (BMP et JPG) Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Fichiers images (BMP et JPG) Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
Fichiers images (BMP et JPG) Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Fichiers images (BMP et JPG) Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
Fichiers images (BMP et JPG) Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment : -21%
LEGO® Icons 10329 Les Plantes Miniatures, ...
Voir le deal
39.59 €

 

 Fichiers images (BMP et JPG)

Aller en bas 
AuteurMessage
JL35




Nombre de messages : 7095
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 : 7095
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 : 7095
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
-
» Suggestions d'améliorations diverses
» Sub fondu d'images
» Retouche d'images
» Traitement d'images
» Bricoler des 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: