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. #1
    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 Modifier les dimensions d'une image insérée (jpg)
    J'insère des images (jpg) que je parviens à re-dimensionner sans difficulté. Par contre, je souhaiterais supprimer une partie de ces images.
    Ces parties sont toujours sur le pourtour de l'image (au-dessus et au-dessous ou à gauche et à droite) et sont toujours de couleur noire... si cela pouvait faciliter la solution.
    A défaut de solution toute faite, une orientation de recherche me conviendrait parfaitement.
    Par avance, merci.

  2. #2
    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,

    Je vois mal comment tu pourrais t'en sortir autrement qu'en "créant" un hdc... puis en l'utilisant avec des fonctions de l'Api de Windows... (et même ainsi : dur dur de garder la persistannce de ton image, ensuite !...)

    Avec VBA, en outre : même pas de stdpicture ...

  3. #3
    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,
    Merci de ta réponse même si elle n'est pas faite pour m'encourager
    Par contre, j'ai cherché sur le web une explication pour HDC et la plus proche que j'ai trouvée est "Harley Davidson Club"
    Comme je doute que ce soit de ça dont tu parles, peux-tu éclairer mon ignorance ?
    Par avance, merci.

    PS - J'ai trouvé stdpicture. Je lis...

  4. #4
    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
    Oh...

    Un HDC est tout simplement un le Handle d'un Contexte de Dispositif) H pour Handle, D pour Device et C pour Context.

    VBA, iconnépaçà !

  5. #5
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    bonjour,


    en fait tu veux modifier la zone affichée de l'image pour supprimer le noir..?

    et rendre le "noir" couleur transparante ..? cela ne pourrai pas te convenir ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Selection.ShapeRange.PictureFormat.TransparentBackground = msoTrue
        Selection.ShapeRange.PictureFormat.TransparencyColor = RGB(0, 0, 0)

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour,

    je vois deux solutions :
    1) Mieux cadrer tes prises de vue
    2) Utiliser la classe GDI+ d'Arkham46

    A+

    Philippe

  7. #7
    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
    Le noir en transparent rendra "transparent" tout pixel noir...

    En outre : il est rare que des "bordures/déchets" soient 1) RGB(0,0,0) et 2) parfaitement unies.... (sauf si ainsi créées de toutes pièces).

    Si tes bordures à supprimer proviennent d'une image scannée (ma boule de crystal ?) : oublie la solution "couleur transparente" ...

  8. #8
    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 philben,

    peux-tu m'expliquer comment, sans HDc, tu comptes assurer un traitement, puis la persistance, avec GDI + ?

  9. #9
    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
    @ucfoutu
    En effet, c'est le C.. de texte que je ne comprenais pas.
    Pour le Handle, il me semblait bien que bbil avait offert une solution... pour un userform... http://excel.developpez.com/faq/inde...=Form#UFhandle
    @JackOuYA
    Non, la transparence ne règlerait pas mon pb dans tous les cas d'utilisation de l'image puisqu'elle aurait les mêmes dimensions. En outre, cela risquerait d'altérer l'image.
    Mais merci malgré tout.
    @philben
    1) Mieux cadrer tes prises de vue
    C'est malin !
    2) Utiliser la classe GDI+ d'Arkham46
    Je lis le pdf proposé et je reviens. Mais à première vue, et quand je lis ça : Nom : Source.jpg
Affichages : 160
Taille : 23,2 Ko les points sont déjà définis. Et ce que cherche à faire c'est précisément les définir
    Mais là encore, merci pour l'idée.

  10. #10
    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
    Citation Envoyé par ouskel'n'or Voir le message
    @ucfoutu
    En effet, c'est le C.. de texte que je ne comprenais pas.
    Pour le Handle, il me semblait bien que bbil avait offert une solution... pour un userform...

    Je n'ai pas, non plus, le moindre problème en ce qui concerne l'utilisation du HDC d'une UserForm (je sais faire, y compris dessiner sur une UserForm)...
    Bien ... et ensuite, hein ?... pas possible d'assurer la persistance !!! ... That's the "small" problem, mate ! ...

  11. #11
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    Citation Envoyé par ucfoutu Voir le message
    Je n'ai pas, non plus, le moindre problème en ce qui concerne l'utilisation du HDC d'une UserForm (je sais faire, y compris dessiner sur une UserForm)...
    Bien ... et ensuite, hein ?... pas possible d'assurer la persistance !!! ... That's the "small" problem, mate ! ...
    pas besoin de dessiner ! il sagit de trouver la "taille" de la portion en noir pour définir la zone à afficher ...(que viens faire la persistance ici !)

  12. #12
    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
    Maintenant (et si la chose t'est indispensable et que la solution t'intéresse) : je peux (au retour de ma promenade à la mer) te faire un exe en VB pour traiter ton image et en transformer le fichier.... il te suffira alors de :
    1) choisir ton fichier image
    2) traiter par mon exe
    3) importer la nouvelle image (le fichier transformé).

  13. #13
    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,
    Tu peux casser ta boule de cristal, j'explique tout ici
    La méthode décrite reste bonne pour envoyer des photos de taille réduite sans altérer leur qualité d'affichage à l'écran, tant à l'aide de l'aperçu Windows qu'en diaporama PowerPoint (si ce n'est pas dans un but de projection sur grand écran).
    L'inconvénient du cadre noir survient en cas d'édition ou d'insertion dans un document.
    C'est là mon problème.
    Je précise tout de même qu'une fois définies les dimensions des "cadres", il le sera une fois pour toutes. Là n'est pas l'essentiel puisque je peux les évaluer par ailleurs.
    La difficulté est bien de dire "l'image commence ici et finit là, récupérer l'image et rien de plus". Revient à vouloir découper un bout d'une copie d'écran.
    Si j'insiste un peu, c'est qu'il me semble que j'ai eu vu passer un thread qui traitait le sujet. Hélas, je ne l'ai pas retrouvé.

    Citation Envoyé par ucfoutu
    Je n'ai rien d'autre à te proposer que ce que je t'ai proposé, ousk ...
    C'est mieux que ce que j'attendais. Ça pourrait en effet et sans doute me convenir. Par contre, ton exe prendrait-il en charge un jpg ?

  14. #14
    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
    Jpg ? Oui, sans problème ...

  15. #15
    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
    A propos de l'exe, il faudrait pouvoir lui envoyer les paramètres de hauteur et de largeur (ou de left et width de l'image dans son cadre pour les images en mode portrait ou top et Height pour les images en mode paysage) Au départ, avec leur cadre, elles ont toutes la même largeur et la même hauteur. Il devra donc reconnaître s'il sagit d'un mode ou de l'autre (Portrait/paysage). De mon côté je le fais en identifiant la plus grande dimension après insertion de l'image mais avant copie d'écran de l'image affichée.
    Je n'ai plus VB6 sur mon micro sinon je tenterais bien l'aventure, le temps est gris et j'ai fini les bouquins que j'avais à lire...
    Merci de te pencher sur mon triste sort

    PS - Je crois effectivement que c'est sur VB que j'avais vu quelque chose à propos d'un travail sur les images.

  16. #16
    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
    Peu importe, il me semble, puisque l'exe VB va :
    1) ouvrir l'image du fichier
    2) traiter les pixels
    3) restituer les dimensions originales par un strechblt
    4) écraser le fichier par celui correspondant à l'image transformée

    Tu te retrouveras donc in fine avec un fichier contenant une image de dimensions identiques à ce qu'elles étaient au départ et c'est ce fichier dont tu auras à insérer l'image dans VBA, exactement comme avant.

  17. #17
    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,
    Citation Envoyé par ucfoutu
    Tu te retrouveras donc in fine avec un fichier contenant une image de dimensions identiques à ce qu'elles étaient au départ
    Qu'on se comprenne bien :
    ................Avant j'ai Nom : Avant1.jpg
Affichages : 220
Taille : 1,4 Ko ou Nom : Avant2.jpg
Affichages : 217
Taille : 1,4 Ko
    Après, je souhaite avoir Nom : Après1.jpg
Affichages : 259
Taille : 1,2 Ko ou Nom : Après2.jpg
Affichages : 213
Taille : 1,2 Ko
    C'est de ça dont tu parles ?

    Edit
    Je connais la largeur des marges noires, que ce soit proportionnellement à l'image (%) ou en pixels, en hauteur ou en largeur.

  18. #18
    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
    Citation Envoyé par ouskel'n'or Voir le message
    Je connais la largeur des marges noires, que ce soit proportionnellement à l'image (%) ou en pixels, en hauteur ou en largeur.
    Communique-moi alors ces données (celà va faire gagner du code mais également du temps de traitement car je n'aurais pas à parcourir l'image, même partiellement, pour déterminer ces dimensions).
    En pixels, ce serait très bien. Mais en proportions également, bien qu'alors il faudra exécuter un petit calcul (pas très lourd)

    Je m'y mets dès cette communuication.

  19. #19
    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
    Bon, ousk,

    Je suis déjà presque prêt ...

    Me manquent tes infos...
    Pour l'instant, j'en suis déjà à avoir terminé en passant la jpeg en stdpicture.
    Tes bordures sautent et je sauvegarde en .bmp
    Tout celà fonctionne déjà.

    Et tes infos ?

  20. #20
    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é mais j'ai dû m'absenter
    En mode Paysage : Width 966, Height 774
    En mode Portrait : Width 620, Height 774

    Mais si je pouvais les paramétrer, ce serait mieux.
    Merci

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 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, 10h26
  2. Modifier les dimensions d'une image
    Par LoicH dans le forum C++Builder
    Réponses: 3
    Dernier message: 29/10/2007, 22h53
  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, 09h57
  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, 12h06

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