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

 Delphi Discussion :

Changer la luminosité d'une image


Sujet :

Delphi

  1. #1
    Membre actif Avatar de Speed41
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 718
    Points : 210
    Points
    210
    Par défaut Changer la luminosité d'une image
    Bonjour,

    Y aurait'il une solution pour changer la luminosité d'une image, en sachant que je dois pouvoir revenir rapidement à l'image d'origine

    Dans mon programme je génère plusieurs images sur les quelles je peux apporter des modifications. Une seule peut être active à la fois (comme une fenêtre). Je cherche une solution pour différencier des autres. La solution est de mettre les non actives en plus claire, visible mais moins.

    Si vous avez d'autres idées (en évitant d'ajouter des bords)

    Merci

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    Par défaut
    Bonjour,

    par programmation je ne sais pas, mais par contre tu peut utiliser un éditeur d'image pour créer les images avec les luminosité que tu veut tu les enregistre de cette maniére par exple:
    image11.bmp
    image12.bmp
    image13.bmp
    ...
    et par programmation tu peut utiliser un Ttrackbar pour sélectionner l'image avec la luminosité que tu veut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    procedure Tform1.trackbar1change(sender:Tobject)
    begin
            image1.picture.loadfromfile('image1'+trackbar.position+'.bmp')
    end;

  3. #3
    Membre actif Avatar de Speed41
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 718
    Points : 210
    Points
    210
    Par défaut
    Ok pour récupérer une image mais comment modifier la luminosité ?

  4. #4
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 743
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 743
    Points : 15 160
    Points
    15 160
    Par défaut
    Salut,
    Citation Envoyé par Speed41 Voir le message
    Ok pour récupérer une image mais comment modifier la luminosité ?
    en modifiant l'intensité (qui va de 0 [noir] à 255 [blanc]) des informations RGB de chaque pixel.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  5. #5
    Membre actif Avatar de Speed41
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 718
    Points : 210
    Points
    210
    Par défaut
    Il n'y a pas un moyen plus simple que de modifier la valeur RGB de chaque pixel. J'avais cette solution mais que je trouve "longue" j'avais espéré une solution plus globale.

    Ok merci à tous les deux

  6. #6
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 743
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 743
    Points : 15 160
    Points
    15 160
    Par défaut
    Citation Envoyé par Speed41 Voir le message
    (...) j'avais espéré une solution plus globale.

    Ok merci à tous les deux
    Toute solution plus globale, ie de plus haut niveau, englobera (et donc te masquera) le fait qu'elle fera ce que j'ai dit, tripoter les pixels un par un.
    Comment faire autrement, mmmh ?
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  7. #7
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Bonjour,

    Voici un bout de code :
    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
    function IntToByte(i: Integer): Byte;
    begin if i > 255 then Result := 255
      else if i < 0 then Result := 0
      else Result := i;
    end;
     
    function BmpLuminosite(Bmp: TBitmap; Quanti: Integer) : TBitmap;
    // Quanti dans [-255..+255]
    var
      SL : ^Byte;
      x, y: Integer;
    begin
      Bmp.PixelFormat := pf24bit;
      Result:=tBitMap.Create;
      Result.Assign(Bmp);
      for y := 0 to Bmp.Height - 1 do
      begin
        SL := Result.scanline[y];
        for x := 0 to Bmp.Width*3 - 1 do
        begin
          SL^ :=IntToByte(SL^ + ((255 - SL^) * Quanti) div 255);
          Inc(SL);
        end;
      end;
    end; // BmpLuminosite
     
    procedure TForm1.SpeedButton1Click(Sender: TObject);
    var Bm : tBitMap;
    begin
         Bm:=BmpLuminosite(Image1.Picture.Bitmap, +25);
         Image1.Picture.Bitmap.Assign(Bm);
         Bm.Free;
    end;
    Bm:=BmpLuminosite(Image1.Picture.Bitmap, +25); augmente la luminosité de + 25%
    et Bm:=BmpLuminosite(Image1.Picture.Bitmap, -25); pour rétablir la luminosité de l'image d'origine.

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  8. #8
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 710
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 710
    Points : 13 174
    Points
    13 174
    Par défaut
    Sur le même principe que Gilbert mais en convertissant l'image en 32 bits (pf32bit) et en augmentant la transparence (canal alpha à 150 par exemple). Les couleurs ne seront pas altérées et le retour à la normal se fera simplement en la repassant en pf24bit

  9. #9
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Re-bonjour,

    Andnotor : Sur le même principe que Gilbert mais en convertissant l'image en 32 bits (pf32bit) et en augmentant la transparence (canal alpha à 150 par exemple). Les couleurs ne seront pas altérées et le retour à la normal se fera simplement en la repassant en pf24bit
    ... Astucieux, mais comment se fait-il que si je modifie la luminosité donc les couleurs du 32 bits le retour à la normale s'obtient simplement en la repassant en pf24bit ??? : il y a ici une subtilité qui m'échappe.

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  10. #10
    Membre actif Avatar de Speed41
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 718
    Points : 210
    Points
    210
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Sur le même principe que Gilbert mais en convertissant l'image en 32 bits (pf32bit) et en augmentant la transparence (canal alpha à 150 par exemple). Les couleurs ne seront pas altérées et le retour à la normal se fera simplement en la repassant en pf24bit
    Ca marche, simple et rapide. Ok je prends. Je viens de tester et le résultat est satisfaisant pour ce dont j'en ai besoin. Dire que je comprends c'est bien autre chose

    Merci

  11. #11
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 710
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 710
    Points : 13 174
    Points
    13 174
    Par défaut
    Citation Envoyé par Gilbert Geyer Voir le message
    ... Astucieux, mais comment se fait-il que si je modifie la luminosité donc les couleurs du 32 bits le retour à la normale s'obtient simplement en la repassant en pf24bit ??? : il y a ici une subtilité qui m'échappe.
    Si tu as fait l'essai et que tu obtiens quelque chose de plus lumineux, c'est que ton fond est blanc (ou clair). Sur un fond noir, l'image semblerait plus sombre
    Le retour en 24 bits fait que le canal alpha est ignoré et l'image à nouveau 100% opaque, on ne touche absolument pas aux composantes RGB mais uniquement à la transparence

  12. #12
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Bonjour,

    Andnotor : Le retour en 24 bits fait que le canal alpha est ignoré et l'image à nouveau 100% opaque, on ne touche absolument pas aux composantes RGB mais uniquement à la transparence
    ... OK, merci, pigé.

    Mais comme Speed41 a résolu son problème je laisse le code en l'état, on s'en souviendra pour une autre fois.

    Meilleurs voeux pour 2014.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [API HTML5] Changer la luminosité d'une image avec canvas
    Par scandinave dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 14/08/2014, 08h53
  2. [ImageMagick] Changer le dpi d'une image
    Par gIch dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 20/02/2006, 11h42
  3. changer la dimension d'une image dans un tableau
    Par robocop2776 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/10/2005, 15h20
  4. Changer l'adresse d'une image?
    Par Death83 dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 19/10/2005, 15h13
  5. [VisualC++] Changer le format d'une image
    Par dananchet dans le forum MFC
    Réponses: 1
    Dernier message: 06/05/2005, 15h05

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