IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Modifier les dimensions d'une image insérée (jpg)


Sujet :

Macros et VBA Excel

  1. #21
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Paramétrer selon le mode portrait ou paysage ?
    Je m'en charge facilement ...(puisque je peux déterrminer facilement les dimensions en pixels et donc savoir si c'est plus large que haut ou le contraire)
    Mais dis-moi, tes chiffres, ils sont bien en pixels ? Et il s'agit bien là de l'épaisseur de tes bordures (car ça fait ben beaucoup, pour une épaisseur !!!... qui prendrait presque tout ton écran !!!)

    et tu as écrit plus haut :

    Je connais la largeur des marges noires, que ce soit proportionnellement à l'image (%) ou en pixels, en hauteur ou en largeur.
    Paramétrer autrement est également possible, mais il faudrait utiliser un tremplin qui alourdirait... mais c'est possible, oui...

    Tu dis ...

    Edit : je peux par exemple voir (en analysant) que ton image avant1.jpg mesure 94 pixels par 77 pixels, que ses bordures latérales ont une épaisseur de 19 pixels et qu'elle possède des bordures haute et basse de 1 pixel...
    Je peux également te dire que ces bordures ne sont pas parfaitement noires ( <> RGB(0,0,0) )

    Ce que (si tu avais encore VB6), tu pourrais constater toi-même.
    Voilà le code Vb6 que j'utilise pour traiter avant1.jpg (il va de soi que oterh et oterl sont les marges trouvées pour cette image).

    Scalemode de Me et de Picture1 en pixels - Autoredraw de Picture1 à True

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Option Explicit
     
    Private Sub Form_Load()
        Me.Hide
        Dim lWidth&, lHeight&
        Call GetPicSize(Me, App.Path & "\avant1.jpg", lWidth, lHeight, vbPixels)
        MsgBox lWidth & " x  " & lHeight ' tu as là les dimensions
        Unload Me
    End Sub
     
    Sub GetPicSize(Frm As Form, sPath As String, ByRef lWidth As Long, ByRef lHeight As Long, Optional iScale As Integer = vbTwips)
        Dim ObjStd As New StdPicture, oterl As Integer, oterh As Integer
        oterh = 1 'c'est la l'épaisseur de tes marges en haut et en bas
        oterl = 19 ' et là celle de tes marges latérales
        Set ObjStd = LoadPicture(sPath)
        lWidth = Me.ScaleX(ObjStd.Width, vbHimetric, iScale)
        lHeight = Me.ScaleY(ObjStd.Height, vbHimetric, iScale)
        Picture1.Move 0, 0, lWidth - oterl - oterl, lHeight - oterh - oterh
        Picture1.PaintPicture ObjStd, 0, 0, Picture1.Width, Picture1.Height, oterl, oterh, lWidth - oterl - oterl, lHeight - oterh
        SavePicture Picture1.Image, App.Path & "\apres1.bmp"
        Set ObjStd = Nothing
    End Sub
    C'est oterh et oterl que j'attends de toi, en fonction de "paysage" ou "portrait" ... (soit en valeur absolue, soit en valeur relative, comme tu préfères).

    tu trouveras dans le zip joint tes deux images avant1.jpg et apres1.bmp
    (traitement encode grossier à ce stade, mais déjà probant)
    Fichiers attachés Fichiers attachés

  2. #22
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Citation Envoyé par ucfoutu
    Mais dis-moi, tes chiffres, ils sont bien en pixels ? Et il s'agit bien là de l'épaisseur de tes bordures (car ça fait ben beaucoup, pour une épaisseur !!!... qui prendrait presque tout ton écran !!!)
    Bien vu, ce sont les dimensions des images. Je te donne les marges demain, en fait j'ai une erreur sur la hauteur en mode paysage.
    A demain donc.
    Bonne nuit

    Edit
    Tout arrive...
    Les dimensions donc :
    Nom : Dimensions.JPG
Affichages : 1134
Taille : 26,0 Ko
    Ne t'étonne pas des décimales, c'est le résultat de calculs

    Le problème reste que ces dimensions peuvent varier en fonction de la définition de l'écran. Le passage de paramètres m'arangerait

    J'en profite pour demander s'il est possible de récupérer cette définition.
    Sinon, je ferai sans, en prenant les dimensions de l'appli.
    Encore merci.

  3. #23
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 542
    Points : 712
    Points
    712
    Par défaut
    Bonjour à tous

    Je suis ce fil avec attention. Si je peux me permettre et si j'ai compris la dernière demande de ouskel'n'or sur son intervention de 10h57, voici ce que j'ai retrouvé dans mes archives :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Declare Function GetSystemMetrics Lib "user32.dll" (ByVal nIndex As Long) As Long
    Sub Res()
    Dim iResX As Integer
    Dim iResY As Integer
     
    iResX = GetSystemMetrics(0)
    iResY = GetSystemMetrics(1)
    MsgBox "La résolution est : " & iResX & " x " & iResY
    End Sub
    Bonne journée

    Eric

  4. #24
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Merci edelweisseric, c'est pile poil ce qu'il me fallait. Ainsi, je pourrai paramétrer toutes les dimensions afin que mon truc s'adapte à la configuration d'écran de l'utilisateur.
    Pour l'instant, j'attends avec impatience le retour de ucfoutu

  5. #25
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonjour, ousk,

    Avant toute autre chose, je prèférerais que l'on s'attache plus à la carte graphique, même si cela parait plus fastidieux :

    J'extraierais donc préférablement la résolution de cette manière, personnellement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Const ENUM_CURRENT_SETTINGS As Long = -1&
    Const CCDEVICENAME = 32
    Const CCFORMNAME = 32
    Private Type DEVMODE
        dmDeviceName As String * CCDEVICENAME
        dmSpecVersion As Integer
        dmDriverVersion As Integer
        dmSize As Integer
        dmDriverExtra As Integer
        dmFields As Long
        dmOrientation As Integer
        dmPaperSize As Integer
        dmPaperLength As Integer
        dmPaperWidth As Integer
        dmScale As Integer
        dmCopies As Integer
        dmDefaultSource As Integer
        dmPrintQuality As Integer
        dmColor As Integer
        dmDuplex As Integer
        dmYResolution As Integer
        dmTTOption As Integer
        dmCollate As Integer
        dmFormName As String * CCFORMNAME
        dmUnusedPadding As Integer
        dmBitsPerPel As Integer
        dmPelsWidth As Long
        dmPelsHeight As Long
        dmDisplayFlags As Long
        dmDisplayFrequency As Long
    End Type
    Private Declare Function EnumDisplaySettings Lib "user32" Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName As Long, ByVal iModeNum As Long, lpDevMode As Any) As Boolean
     
    Private Sub Command1_Click()
       Dim DevM As DEVMODE
       Call EnumDisplaySettings(0&, ENUM_CURRENT_SETTINGS, DevM)
       MsgBox "ton écran a une rtésolution de " & DevM.dmPelsWidth & " pixels" & " par " & DevM.dmPelsHeight & " pixels"
    End Sub
    Mais bon (une vieille manie d'indépendance, sans doute ...)

    Ensuite et surtout :

    Je comprends mal ton truc, là !
    Un fichier image définit une image en pixels et est totalement indépendant de la résolution de la machine !
    Un pixel est un pixel, quelle que soit la résolution ...

    Je suis donc un peu inquet et me demande si, au bout du compte, ce n'est pas directement une image, d'où tu pars, mais de son "rendu" (par une capture ? ) à l'écran, lors de l'exécution de je ne sais quoi ... ce qui n'est pas du tout la même chose et nous conduit alors sur des sentiers fort acrobatiques ...

    La chose reste malgré tout encore possible (sans même se préoccuper ni de la résolution, ni des épaisseurs de tes marges, ni de l'orientation de ton image) avec un parcours de ton image et quelques comparaisons....
    Reste alors tout-à-fait impératif de connaître avec précision (et à condition qu'elle soit uniforme) la couleur RGB de tes bordures...(et cette couleur ne parait pas être RGB(0,0,0) !...)

    J'attends que tu sois très précis sur tous ces derniers points ...

  6. #26
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Hello,
    As- tu regardé le lien que j'ai mis dans mon dernier message ? Il explique ce que je fais. Je réalise une copie d'écran plein écran d'un diaporama sous power-point afin d'obtenir à l'écran une image que j'exporte alors depuis Excel dans un graphe vide mais noir.
    Si tu testes les limites du noir dans ton code, que le noir n'est pas vraiment noir, alors je pourrai passer au blanc, en espérant qu'il reste blanc, le blanc
    Mais jète un oeil au lien.
    Là, tout de suite, j'ai un problème cornélien qui se pose à moi : ma douce moitié souhaite profiter du soleil pour faire un tour de moto... et comme c'est moi qui la conduit...
    Bref, à ce soir. Profites-en pour aller à la mer

  7. #27
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Question à 1/4 de roue de mooto :

    Tu l'importes comment, ton image ? Êst-elle dans le presse-papier (ou peut-elle y être mise ?) ?

  8. #28
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Hello Ucfoutu,
    Une explication ?
    Dans Excel, je n'ai pas accès aux twips, si ce n'est dans le mauvais sens. Je peux convertir un nombre de points en pixels et utiliser les pixels, non l'inverse.
    Cet état de fait m'empêche de conserver les proportions de l'image quelque soit la résolution de l'écran.
    Je suis donc bien obligé de m'adapter à la situation.

    Si je fais une copie d'écran en 1280 * 1024, la copie, sauvegardée en bmp pèse 3 932 214 octets
    Ce qui correspond "environ" à 1280 * 1024 * 3 (octets par pixel)

    Si je fais une copie d'écran en 1024 * 768, la copie sauvegardée en bmp ne pèse que 2 359 350 octets
    Ce qui correspond "environ" à 1024 * 768 * 3 (octets par pixel)

    Enfin, si je regarde PixelsPerInch, dans l'aide de VBA, on retrouve bien ces différences
    Citation Envoyé par l'aide en ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    With Application.DefaultWebOptions
        Select Case .ScreenSize
            Case msoScreenSize800x600
                .PixelsPerInch = 72
            Case msoScreenSize1024x768
                .PixelsPerInch = 96
            Case Else 'je suppose qu'il s'agit de 1280 * 1024
                .PixelsPerInch = 120
        End Select
    End With
    Les dimensions de l'image, en termes de pixels, suivent cette variation.
    C'est pourquoi, pour définir la taille de l'image afin de l'adapter à la diapo dans PowerPoint, j'ai besoin de connaître la définition de l'écran.
    Naturellement, la taille de l'écran a également une influence mais là, je n'ai pas encore approfondi et me contente de traiter ce que je comprends.
    Pour exemple de ce que je n'ai pas encore éclairci... les calculs que je fais à partir des données fournies par Wikipédia concernant le pixel et les inchs ne correspondent pas aux valeurs de l'aide. Je dois encore mal interpréter quelque chose
    Mais c'est secondaire, les tailles des fichiers en bmp selon la définition de l'écran sont bien telles qu'elles doivent être ()

    Toutes les dimensions que je t'ai données correspondent à une définition de 1280 * 1024 sur un écran de 19"
    Là, je crois que j'ai fait le tour de ce que je suis capable d'expliquer.

    Tu comprends maintenant que, compte tenu de ce que j'ai compris, cela justifie ma volonté de paramétrer la procédure.
    Charge à moi de me "débrouiller" ensuite pour envoyer les dimensions qui vont bien.
    En tous cas, je te remercie de ton aide.
    Bonne nuit

  9. #29
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Re...

    Je comprends que ta capture d'écran capture une "surface" matérielle dépendant en effet de la résolution de l'écran et ne reflète pas le nombre de pixels occupés par la capture.
    L'image que tu capture ainsi (un rectangle) a toutefois des dimensions en pixels.
    Les deux codes donnés plus haut permettent de connaûtre la résoltuion (au moment de la capture) de l'écran.
    Un calcul (règle de 3) simple permet alors de déduire les dimensions en pixels de l'image (pas du rectangle capturé).
    Le calcul pour passer de points en pixels et vice-versa est relativement simple, dès lors que l'on connait le nombre de twips par pixels en hauteur et en largeur. J'ai récemment montré comment connaitre ces valeurs (sous VBA) et faire le calcul de transformation.

  10. #30
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    Bien vu, ce sont les dimensions des images. Je te donne les marges demain, en fait j'ai une erreur sur la hauteur en mode paysage.
    A demain donc.
    Bonne nuit

    Edit
    Tout arrive...
    Les dimensions donc :
    Nom : Dimensions.JPG
Affichages : 1134
Taille : 26,0 Ko
    Ne t'étonne pas des décimales, c'est le résultat de calculs

    Le problème reste que ces dimensions peuvent varier en fonction de la définition de l'écran. Le passage de paramètres m'arangerait

    J'en profite pour demander s'il est possible de récupérer cette définition.
    Sinon, je ferai sans, en prenant les dimensions de l'appli.
    Encore merci.
    Bonjour,
    Je veux bien que j'ai lu en diagonale ce long sujet mais si tu connais les mesures des bandes à supprimer, pourquoi toutes ces usines à gaz ?
    En quoi les propriétés CropLeft (croptop etc) de l'object Pictureformat ne te satisfont pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Recadrer(pict As Picture, Optional lBandeVert As Single = 0, Optional hBandeHor As Single = 0)
     
        ' On recadre (en points ou en %)
        With pict.ShapeRange.PictureFormat
            .CropLeft = lBandeVert
            .CropRight = lBandeVert
            .CropTop = hBandeHor
            .CropBottom = hBandeHor
        End With
     
        ' Copier l'image recadrée dans le presse papier
        pict.CopyPicture xlScreen
    End Sub

  11. #31
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Citation Envoyé par uc
    J'ai récemment montré comment connaitre ces valeurs (sous VBA) et faire le calcul de transformation
    Ok, j'ai également trouvé ça.
    Seulement, je ne sais pas par quel bout le prendre.
    Les problèmes sont :
    - Que le nombre de points par pixels est différents en Y de ce qu'il est en X
    - Qu'Excel ne connaît pas les Twips si ce n'est pour les convertir en Pixels... quand on a les Twips.
    - Que je ne connais pas à l'avance ces valeurs.
    Ma question, donc :
    De quoi as-tu besoin ?
    Je pourrais bien sûr créer une table de correspondance mais j'ai peur que ça devienne vite une usine à gaz.

    Une autre question : Tu dis "Un calcul (règle de 3) simple permet alors de déduire les dimensions en pixels de l'image (pas du rectangle capturé)."
    En effet, si j'ai une définition de 1280 * 1024 correspondant au nombre de pixels, tandis que mon image fait 966 * 774.
    A quoi correspondent les dimensions de l'image ? Pas à des points ou alors je n'ai rien compris... Si je fais ça avec ma copie d'écran
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        With ActiveWindow
            MsgBox .PointsToScreenPixelsX(.Width) ' => 1569
            MsgBox .PointsToScreenPixelsY(.Height) ' => 1296
        End With
    Donc, cépaça
    Bref, de quoi as-tu besoin ?
    Merci pour ta patience.

  12. #32
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Alors ?

  13. #33
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Désolé, Dark, je n'avais pas lu ta réponse, nous avons posté pile poil au même instant. Merci, je regarde ça.

    Edit
    Ok, je ne connaissais pas Crop*
    Ça devrait coller. Mais ça va être une foutu usine à gaz.
    J'explique : Je souhaite corriger une copie d'écran, pas un objet "Picture". Ce qui veut dire que, pour chaque copie d'écran, je dois l'enregistrer (ce que je fais à présent avec les marges à effacer) puis l'insérer en tant qu'image, corriger celle-ci, puis l'enregistrer de nouveau. Mais ok, je teste ça.
    Merci pour la solution.

  14. #34
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Comme je n'ai pas tout suivi,
    tu n'as pas la possibilité d'exporter directement tes images depuis PP sans passer par la copie d'écran ?

  15. #35
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Non, je récupère l'image donnée par le diaporama afin d'avoir un plein écran. A ce niveau ce n'est pas un objet. J'ai testé avec ActiveWindow mais ça génère une erreur.
    Mais peut-être est-ce que je n'utilise pas le bon objet. Une idée ?

  16. #36
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    Non, je récupère l'image donnée par le diaporama afin d'avoir un plein écran. .../...
    Plein écran ou pas, cela ne devrait pas interférer sur la qualité ?
    Citation Envoyé par ouskel'n'or Voir le message
    .../...
    A ce niveau ce n'est pas un objet. J'ai testé avec ActiveWindow mais ça génère une erreur.
    En mode plein écran ou pas, il doit y avoir moyen d'interférer.
    Citation Envoyé par ouskel'n'or Voir le message
    Mais peut-être est-ce que je n'utilise pas le bon objet. Une idée ?
    Je ne connais pas (ou très peu) PP - je viens d'ailleurs de le réinstaller.

    Il semble que ce soit l'object Slide qui permette de manipuler la page -
    (je récupérerais donc chaque slide depuis l'évènement PresentationNewSlide)
    Shapes étant apparemment la collection des objects contenus.
    J'imagine qu'il est possible de filtrer les objects à exporter en fonction de leurs types
    d'autre part j'ai vu que la méthode export de slide permet de choisir la taille ...

  17. #37
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Ok, Dark, je viens de lire ta réponse. Je vais voir ça. Pour le moment, j'ai réussi à obtenir exactement ce que je voulais avec Crop* en ouvrant le fichier enregistré préalablement avec ses marges.

    Plein écran ou pas, cela ne devrait pas interférer sur la qualité ?
    Si ! Je résume : Je cherche à réduire la taille d'un fichier image sans altérer la qualité d'affichage à l'écran ou lors d'une insertion dans un document.
    Pour ne pas altérer cette qualité, je l'affiche en plein écran, je récupère l'image (qui n'en est pas encore une...) obtenue et, sous Excel, je l'exporte depuis un graphe. (le code dont nous avons déjà débattu "ailleurs")
    Si je récupérais l'image insérée, elle conserverait ses caractéristiques d'origine en termes de place. C'est donc bien une copie d'écran que je souhaite réaliser. Copie d'écran qui, en l'état actuelle place des marges sur l'image.
    Ton code règle ce problème mais m'impose de passer par un fichier préalablement enregistré.
    Pour le moment j'en suis là, et à défaut d'une autre solution...

    Je regarde ce que je peux faire avec Slide.

    (Je verrai ensuite comment adapter mon code à la définition de l'écran)

  18. #38
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Re,

    Tu voudras bien m'excuser, Ousk,
    mais pour moi , on ne reste pas fidèle à une image en l'aggrandissant (1ère approximation dans la répartition des pixels) puis en rapetissant le produit (2ème approximation dans la répartition des pixels) ... !

  19. #39
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Hello ucfoutu,
    Re : Quand j'insère une image de 4Mo dans une diapo, elle conserve ses 4 Mo que tu modifies ses dimensions à l'écran ou non. Idem pour toutes les applis quand tu insères une image.
    Pour réduire la taille du fichier (non les dimensions de l'image) sans perdre en qualité d'affichage, si on agrandit l'image à la taille de l'écran on a la définition maximale pour une image entière que l'on peut obtenir pour une définition d'écran et un écran donnés.
    Si à ce "moment là" tu copies l'écran et que tu enregistres la copie, tu auras toujours la même qualité d'affichage pour cette définition d'écran et cet écran là.
    Tu n'obtiendras pas, en plein écran, une meilleure définition avec l'image d'origine.
    Par contre, la copie tiendra moins de place en mémoire ou si tu préfères, sur le disque dur. Et tu pourras l'utiliser en insertion ou pour simple visualisation.
    Ai-je été clair ce coup-ci ?

    NB - Il ne s'agit pas de remplacer le fichier d'origine mais de créer un nouveau fichier moins lourd en termes de place mais ayant la même qualité d'affichage.
    A+

    PS - Je vais pas faire de la pub pour mon code vu que Dark va certainement me simplifier s'il l'aperçoit mais as-tu testé le code que j'ai mis dans Contribuez de PowerPoint. A part les marges, il fait ce que je veux.

  20. #40
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    J'ai le grand malheur d'être un peu matheux...

    Les pixels n'ayant rien à voir avec l'optique (utilisation d'une lentille), il restent de simples pixels.
    Imagine maintenant une image composée d'un seul pixel, donc (en général) de 15 twops par 15 twips et imagine que tu l'aggrandisses (on va dire de 2 fois)===>> 1 pixel x 2 = 2 pixels (dans quel sens, maintenant ? hauteur ou largeur ? ...) ==>> on va dire largeur ===>> nouvelle largeur : 30 twips et nouvelle hauteur, ma foi : 15 twips ===>> on est parti d'un carré et on a un rextangle ! !!!
    Kif kif (voire pire) dans le sens inverse...

    Les pixels ne répondent pas du tout au même principe que celui de l'optique, ousk ... et il te faudrait, soit un coup de bol magistral, soit que tu traites les pixels par "apréciation" des contours globaux ... et encore ... il te faudrait également prévoir des "fondus" ici et là ...

    Un aggrandissement d'un ensemble de pixels conduit inexorablement à une "mosaiquisation" et la réduction d'une mosaique (sauf cas exceptionnellement heureux) conduit inéxorablement à une distorsion de la mosaique....
    essaye donc, pour comprendre, d'imaginer la division par 3 d'une mosaique de pixels composée d'un pixel bleu, d'un pixel blanc et d'un pixel rouge ===>> divisé par 3 ==>> 1 seul pixel ... lequel ? ... Ce que tu comprends ici est maintenant à rapporter sur plusieurs groupes de 3 pixels composant au final une image ... ouille !

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. Modifier les dimensions d'une image JPG
    Par Claude_Azoulai dans le forum VB.NET
    Réponses: 9
    Dernier message: 11/05/2010, 11h26
  2. Modifier les dimensions d'une image
    Par LoicH dans le forum C++Builder
    Réponses: 3
    Dernier message: 29/10/2007, 23h53
  3. [ImageMagick] Obtenir les dimensions d'une image externe?
    Par Death83 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 31/01/2006, 10h57
  4. [Image] Connaitre les dimensions d'une image sans la charger
    Par FredN dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 16/01/2006, 13h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo