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

Angular Discussion :

Obtenir la largeur sur l'écran de l'image source d'un élément ngx-image-cropper


Sujet :

Angular

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    729
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 729
    Par défaut Obtenir la largeur sur l'écran de l'image source d'un élément ngx-image-cropper
    Bonjour,
    j'ai un ngx-image-cropper element : (https://www.npmjs.com/package/ngx-image-cropper):
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        <image-cropper
          [imageBase64]="imageFile"
          [maintainAspectRatio]="true"
          [aspectRatio]="aspectRatio"  
          [cropperStaticWidth]="cropperStaticWidth"
          [cropperStaticHeight]="cropperStaticHeight"
          [hideResizeSquares]="true"
          format="png"
          (imageCropped)="imageCropped($event)"
          (imageLoaded)="imageLoaded($event)"
          (cropperReady)="cropperReady()"
          (loadImageFailed)="loadImageFailed()"
        ></image-cropper>
    Comme vous pouvez le voir, je charge une image base 64 "imageFile"

    Ce que je veux avoir est la largeur de l'image source ("imageFile") sur l'écran. J'ai essayé de l'obtenir à partir de imageLoaded($event), mais $event est indéfini. J'ai essayé aussi de l'obtenir avec le bout de code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
          ngAfterViewInit() {
            const element = $('img.source-image.ng-star-inserted');
            console.log('JQUERY ELEMENT');
            console.log(element);
          }
    Mais j'ai l'ouput suivant

    Nom : Capture d’écran 2020-12-01 à 11.36.57.png
Affichages : 159
Taille : 24,4 Ko

    J'ai essayé de faire un stackblitz sans pouvoir le faire tourner: https://stackblitz.com/edit/angular-...p.component.ts

  2. #2
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    ça serait bien que tu importes le module image-cropper dans app.module.ts
    quand on installe un package, il faut l'importer dans son module


    c'est écrit dans la doc:
    https://www.npmjs.com/package/ngx-image-cropper


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      imageCropped(event: ImageCroppedEvent) {
        this.croppedImage = event.base64;
        console.log(event);
      }
    dans: console.log(event);
    tu obtiendras les dimensions

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    729
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 729
    Par défaut
    Bonjour Dukoi, et merci pour ta réponse
    malheuresement, je crois que ce sont les dimensions de l'image croppé et non de l'image source. Je précise que je veux la largeur de l'image source à l'écran

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    729
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 729
    Par défaut
    J'ai trouvé le moyen d'avoir cette largeur dans la méthode imageLoaded qui semble se déclencher après ngAfterViewInit()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        imageLoaded(event: any) {
            const element = $('img.source-image.ng-star-inserted');
            console.log('JQUERY ELEMENT');
            console.log(element);
            console.log(element.width());        
        }
    Connaissez vous un autre moyen plus élégant ?

  5. #5
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        var img = new Image();
        img.src = this.imageFile;
        img.addEventListener("load", function() {
          console.log(img.width, img.height);
        });

    évite d'utiliser jquery dans un projet Angular

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/03/2008, 13h58
  2. Comment obtenir des informations sur le serveur?
    Par Me,Myself and I dans le forum ASP.NET
    Réponses: 2
    Dernier message: 16/01/2007, 09h36
  3. Réponses: 4
    Dernier message: 17/11/2006, 19h35
  4. [IMAGE] Comment obtenir hauteur largeur d'une image ??
    Par pouillou dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 05/05/2006, 21h38
  5. Comment centrer une fenêtre sur l'écran?
    Par bygui dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 07/04/2006, 10h25

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