DIMENSIONS D'UNE IMAGE JPEG

Sujets variés concernant le développement en PureBasic
Loulou63
Messages : 6
Inscription : lun. 17/juin/2013 8:36

Re: DIMENSIONS D'UNE IMAGE JPEG

Message par Loulou63 »

Ce que vous énoncé est exacte. Mais ne concerne pas ma recherche dans la mesure ou je conseille à mes élève futurs reporters photographes de ne pas triturer leurs images par des recadrages ou ils risque de re-dimensionner ou re-échantillionner à outrance en négligeant la calcul trilogique : dimension / définition / resolution. Qui n'a rien à voir avec l'affichage sur un écran, bien plus simple qu'une sortie en impression. Vous êtes dans ce domaine et vous savez parfaitement que recevoir un fichier image en rapport avec le type d'impression garantit une impression de qualité. Au cours de ma carrière, j'ai vu a de nombreuses reprises des images détruites parce que l'auteur à voulu procéder à un recadrage destructeur par méconnaissance de ce principe.
Cordialement.
Avatar de l’utilisateur
MLD
Messages : 1103
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: DIMENSIONS D'UNE IMAGE JPEG

Message par MLD »

Ha !
Ces gens travaillent sur les originaux 8O .Il ne savent pas faire de copies. 8O. J'ai la réponse pour le niveau de certains journalistes :mrgreen: :mrgreen:
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: DIMENSIONS D'UNE IMAGE JPEG

Message par Ollivier »

Moi, jme lance au plongeoir... On verra bien s'il y a de l'eau dans le bassin... Si y a pas d'eau c'est pas grave : Figrou il rebondit sur sa queue !

Code : Tout sélectionner

FileName.S = "image.jpg"
Jpeg = OpenFile(#PB_Any, FileName)
FileSeek(Jpeg, 14)
xDpi = ReadUnicodeCharacter(Jpeg)
yDpi = ReadUnicodeCharacter(Jpeg)
Debug "DPI = " + Str(xDpi) + " x " + Str(yDpi)
CloseFile(Jpeg)

UseJPEGImageDecoder() ; petit ajout Ar-S

Jpeg = LoadImage(#PB_Any, FileName)
Wi = ImageWidth(Jpeg)
He = ImageHeight(Jpeg)

x.D = Wi / xDpi
y.D = He / yDpi

Debug "Largeur " + StrD(x) + " pouces"
Debug "Hauteur " + StrD(y) + " pouces"
J'ai pas testé donc si qqun peut confirmer ce serait très aimable...

Bonne journée !
Avatar de l’utilisateur
Ar-S
Messages : 9477
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: DIMENSIONS D'UNE IMAGE JPEG

Message par Ar-S »

Dans les choux..
J'ai testé avec une image de 39x30 pouces
Resultat :
DPI = 256 x 256
Largeur 11.10546875 pouces
Hauteur 8.53125 pouces
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: DIMENSIONS D'UNE IMAGE JPEG

Message par Ollivier »

Ben Figrou s'est pris un face plant dans le fond du bassin tout sec. Traduction : je me suis planté. J'ai un mis un lien hors sujet vers quelques explications d'un prof. à défaut de poster un bon code correct.

https://hs.ldvmultimedia.com/viewtopic.php?pid=211#p211

J'y ai vu deux "clés" n°011A et n°011B (282 et 283) qui semblent préciser les DPI x et y. Mais il faut que le logiciel qui enregistre l'image précise ça.
Marc56
Messages : 2147
Inscription : sam. 08/févr./2014 15:19

Re: DIMENSIONS D'UNE IMAGE JPEG

Message par Marc56 »

Code : Tout sélectionner

FileSeek(Jpeg, 14)
Les informations données à l'offset 14 (Densité en X et en Y, c'est à dire DPI) d'un JPG sont facultatives et sont placées après création de l'image (que ce soit par un APN ou un logiciel d'image) et servent simplement pour permettre de donner une même "taille" d'image en sortie. Cela permet par exemple de s'accorder avec la trame demandée par l'imprimeur et définir la taille de sortie souhaitée.

https://fr.wikipedia.org/wiki/JPEG_File ... nge_Format
Avatar de l’utilisateur
case
Messages : 1528
Inscription : lun. 10/sept./2007 11:13

Re: DIMENSIONS D'UNE IMAGE JPEG

Message par case »

une photo numérique n'a pas de 'résolution native en dpi' puisque la taille de l'image en sortie du capteur est exprimée en mégapixels (pixels) et non pas dpi.
tout vas dépendre de la sortie papier pour la dégradation de l'image par rapport a ce qui est visible a l’écran.

si l'image d'origine est en 5776 x 4336 (capteur 25mp)

donc si 1 pixel est un point de l'image en sortie

en 300 pp de sortie elle fera 489 mm x 367 mm
en 600 pp elle fera 245 mm x 184 mm
en 1200 PP 122 mm X 92 mm

ce qui veux dire que si on sort une image en 5776x4336 sur un support en 122x92 en 300 ppp
on pourra avoir en réalité une image recadrée 4x plus petite pour la même qualité



j'avais codé un logiciel il y a quelques années pour un forum photo ou j’étais modo .
pour calculer les dpi etc
si ca peux aider.

Code : Tout sélectionner


Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #String_0
  #String_1
  #Text_0
  #Text_1
  #String_3
  #String_4
  #Text_3
  #Text_9
  #Text_11
  #Text_12
  #String_9
  #String_10
  #String_12
  #String_13
  #String_16
    #String_17

  #Text_13
  #Text_14
  #Text_16
  #Text_17  
  #Text_18  
  #Text_19
  #String_18
  #String_19
    #Text_20  
  #Text_21
  #Text_22
  #Text_23
  #button_1
  #button_2
  
  
EndEnumeration
inch.f=25.4     ; 1 pouce en mm 
  If OpenWindow(#Window_0, 471, 160, 320, 540, "calculateur de dpi",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
      StringGadget(#String_1, 10, 10, 110, 20, "", #PB_String_Numeric)
      StringGadget(#String_0, 10, 40, 110, 20, "", #PB_String_Numeric)
      StringGadget(#String_4, 10, 100, 110, 20, "", #PB_String_Numeric)
      StringGadget(#String_3, 10, 130, 110, 20, "", #PB_String_Numeric)
      StringGadget(#String_12, 10, 260, 110, 20, "", #PB_String_Numeric)
      StringGadget(#String_13, 10, 290, 110, 20, "", #PB_String_Numeric)
      StringGadget(#String_16, 10, 330, 110, 20, "", #PB_String_Numeric)
      StringGadget(#String_17, 10, 360, 110, 20, "", #PB_String_Numeric)
      StringGadget(#String_9, 80, 180, 70, 20, "", #PB_String_ReadOnly)
      StringGadget(#String_10, 80, 210, 70, 20, "", #PB_String_ReadOnly)
      StringGadget(#String_18, 130, 390, 120, 20, "", #PB_String_ReadOnly)
      StringGadget(#String_19, 130, 420, 120, 20, "", #PB_String_ReadOnly)
      TextGadget(#Text_0, 130, 10, 110, 20, "resolution horizontale")     
      TextGadget(#Text_1, 130, 40, 110, 20, "resolution verticale")
      TextGadget(#Text_3, 130, 100, 110, 20, "taille horizontale en mm")
      TextGadget(#Text_9, 130, 130, 110, 20, "taille verticale en mm")
      TextGadget(#Text_11, 30, 70, 200, 20, "mesures physiques de la taille de l'ecran")
      TextGadget(#Text_12, 10, 180, 70, 20, "DPI Calcules")
      TextGadget(#Text_14, 130, 290, 150, 20, "taille image verticale (pixels)")
      TextGadget(#Text_13, 130, 260, 150, 20, "taille image horizontale (pixels)")
      TextGadget(#Text_16, 130, 330, 180, 20, "resolution de sortie horizontale (ppp)")
      TextGadget(#Text_17, 130, 360, 180, 20, "resolution de sortie verticale (ppp)")
      TextGadget(#Text_18, 10, 390, 110, 20, "taille en mm en sortie")
      TextGadget(#Text_19, 10, 420, 110, 20, "taille en mm en sortie")
      ;
      TextGadget(#Text_20, 10, 450, 110, 20, "[c] 2009 Case pour")
      TextGadget(#Text_21, 10, 470, 110, 20, "code en ")
      ;
      TextGadget(#Text_22, 10, 490, 500, 20, "Freeware ne peut etre vendu ou distribue contre inscription")
      TextGadget(#Text_23, 10, 510, 500, 20, "gratuite ou payante ni sur support payant sans l'accord de l'auteur")      
      ButtonGadget(#button_1,120,450,200,20,"pixel valley")
      ButtonGadget(#button_2,120,470,200,20,"pure basic")             
EndIf



Repeat
  ev=WaitWindowEvent()
  Select ev
    Case #PB_Event_Gadget
      Select EventGadget()
      Case #String_0 
          ys.f=Val(GetGadgetText(#String_0))
          Gosub calcdpi
      Case #String_1
          xs.f=Val(GetGadgetText(#String_1))
          Gosub calcdpi
      Case #String_3
          sizey.f=Val(GetGadgetText(#String_3))
          Gosub calcdpi
      Case #String_4
          sizex.f=Val(GetGadgetText(#String_4))
          Gosub calcdpi
      Case #String_12
          img_x.f=Val(GetGadgetText(#String_12))
          Gosub calcdpi
      Case #String_13
          img_y.f=Val(GetGadgetText(#String_13))
          Gosub calcdpi      
      Case #String_16
          outdpi_x.f=Val(GetGadgetText(#String_16))
          Gosub calcdpi      
      Case #String_17
          outdpi_y.f=Val(GetGadgetText(#String_17))
          Gosub calcdpi  
      Case #button_1
          RunProgram("http://www.pixelvalley.com")
      Case #button_2      
          RunProgram("http://www.purebasic.com")        
    EndSelect
  Case #PB_Event_CloseWindow
    End
  EndSelect  
ForEver
calcdpi:
If xs<>0
  taillepixelh.f   = sizex/xs
EndIf
If ys<>0
  taillepixelv.f   = sizey/ys
EndIf
If taillepixelh<>0
  ppph.f=inch/taillepixelh
EndIf
If taillepixelv<>0
  pppv.f=inch/taillepixelv
EndIf
If outdpi_x.f<>0
    img_inc_x.f=img_x/outdpi_x
EndIf
If outdpi_y.f<>0
    img_inc_y.f=img_y/outdpi_y
EndIf
;
Debug img_inc_x
mm_out_x.f=img_inc_x*inch
mm_out_y.f=img_inc_y*inch
SetGadgetText(#string_9,Str(ppph))
SetGadgetText(#string_10,Str(pppv))
SetGadgetText(#string_18,Str(mm_out_x))
SetGadgetText(#string_19,Str(mm_out_y))
Return
ImageImage
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: DIMENSIONS D'UNE IMAGE JPEG

Message par Ollivier »

Et hop... Figrou rebondit par surprise... "zboïng..."

Code : Tout sélectionner

; pas testé
FileName.S = "image.jpg"
Jpeg = OpenFile(#PB_Any, FileName)
FileSeek(Jpeg, 13) ; j'ai jammmais mis 14 !!
DpiMode = ReadByte(Jpeg)
xDpi = ReadUnicodeCharacter(Jpeg)
yDpi = ReadUnicodeCharacter(Jpeg)
Debug "DPI = " + Str(xDpi) + " x " + Str(yDpi)
CloseFile(Jpeg)
UseJPEGImageDecoder() ; petit ajout Ar-S
Jpeg = LoadImage(#PB_Any, FileName)
Wi = ImageWidth(Jpeg)
He = ImageHeight(Jpeg)
x.D = Wi / xDpi
y.D = He / yDpi
If DpiMode = 1
   Unit.S = " pouces"
Else
   Unit.S = " cm"
EndIf
Debug "Largeur " + StrD(x) + Unit
Debug "Hauteur " + StrD(y) + Unit
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: DIMENSIONS D'UNE IMAGE JPEG

Message par Ollivier »

Ahm merde... C'est pour le miniature en fait ça...
Avatar de l’utilisateur
case
Messages : 1528
Inscription : lun. 10/sept./2007 11:13

Re: DIMENSIONS D'UNE IMAGE JPEG

Message par case »

Ollivier a écrit :Ahm merde... C'est pour le miniature en fait ça...
:mrgreen:
ImageImage
Répondre