1. #1
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    décembre 2011
    Messages
    3 210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : décembre 2011
    Messages : 3 210
    Points : 11 744
    Points
    11 744
    Billets dans le blog
    5

    Par défaut Fabrication d'une image PNG avec LuaCairo

    Bonjour !

    Je vous propose l'adaption pour LuaCairo d'un exemple en C téléchargé sur cette page. Il s'agit du logo de la société IBM.

    Comme vous pourrez le constater, il manque un détail. Mais tel quel, le code intéressera peut-être quelqu'un ?

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
     
    -- http://www.ibm.com/developerworks/library/l-cairo/index.html
    -- http://www.ibm.com/developerworks/library/l-cairo/index.html#download
    -- http://www.dynaset.org/dogusanh/luacairo
     
    local cairo = require "lcairo"
    local CAIRO = cairo
    print (cairo.version_string())
     
    local WIDTH = 670
    local HEIGHT = 230
     
    surface = cairo.image_surface_create (CAIRO.FORMAT_ARGB32, WIDTH, HEIGHT)
    cr = cairo.create (surface);
     
    local pen_radius = 10;
     
    cairo.set_source_rgb (cr, 1, 1, 1);
    cairo.paint (cr);
     
    cairo.set_line_width (cr, pen_radius * 2);
     
    cairo.set_source_rgba (cr, .3, .42, .69, 1);
     
    cairo.move_to (cr, 10, 10);
    cairo.line_to (cr, 160, 10); 
     
    cairo.move_to (cr, 10, 40);
    cairo.line_to (cr, 160, 40);
     
    cairo.move_to (cr, 60, 70);
    cairo.line_to (cr, 110, 70);
     
    cairo.move_to (cr, 60, 100);
    cairo.line_to (cr, 110, 100);
     
    cairo.move_to (cr, 60, 130);
    cairo.line_to (cr, 110, 130);
     
    cairo.move_to (cr, 60, 160);
    cairo.line_to (cr, 110, 160);
     
    cairo.move_to (cr, 10, 190);
    cairo.line_to (cr, 160, 190);
     
    cairo.move_to (cr, 10, 220);
    cairo.line_to (cr, 160, 220);
     
    cairo.move_to (cr, 170, 10);
    cairo.line_to (cr, 340, 10); 
     
    cairo.move_to (cr, 170, 40);
    cairo.line_to (cr, 360, 40); 
     
    cairo.move_to (cr, 200, 70);
    cairo.line_to (cr, 250, 70);
     
    cairo.move_to (cr, 300, 70); 
    cairo.line_to (cr, 360, 70); 
     
    cairo.move_to (cr, 210, 100);
    cairo.line_to (cr, 350, 100); 
     
    cairo.move_to (cr, 210, 130);
    cairo.line_to (cr, 350, 130); 
     
    cairo.move_to (cr, 200, 160);
    cairo.line_to (cr, 250, 160);
     
    cairo.move_to (cr, 300, 160); 
    cairo.line_to (cr, 360, 160); 
     
    cairo.move_to (cr, 170, 190);
    cairo.line_to (cr, 360, 190); 
     
    cairo.move_to (cr, 170, 220);
    cairo.line_to (cr, 340, 220); 
     
    cairo.move_to (cr, 370, 10);
    cairo.line_to (cr, 470, 10); 
    cairo.move_to (cr, 560, 10);
    cairo.line_to (cr, 660, 10); 
     
    cairo.move_to (cr, 370, 40);
    cairo.line_to (cr, 490, 40); 
    cairo.move_to (cr, 540, 40);
    cairo.line_to (cr, 660, 40); 
     
    cairo.move_to (cr, 400, 70);
    cairo.line_to (cr, 510, 70); 
    cairo.move_to (cr, 520, 70);
    cairo.line_to (cr, 630, 70); 
     
    cairo.move_to (cr, 400, 100);
    cairo.line_to (cr, 630, 100); 
     
    cairo.move_to (cr, 400, 130);
    cairo.line_to (cr, 470, 130);
    cairo.move_to (cr, 480, 130);
    cairo.line_to (cr, 550, 130);
    cairo.move_to (cr, 560, 130);
    cairo.line_to (cr, 630, 130); 
     
    cairo.move_to (cr, 400, 160);
    cairo.line_to (cr, 470, 160);
    cairo.move_to (cr, 490, 160);
    cairo.line_to (cr, 540, 160);
    cairo.move_to (cr, 560, 160);
    cairo.line_to (cr, 630, 160); 
     
    cairo.move_to (cr, 370, 190);
    cairo.line_to (cr, 470, 190);
    cairo.move_to (cr, 500, 190);
    cairo.line_to (cr, 530, 190);
    cairo.move_to (cr, 560, 190);
    cairo.line_to (cr, 660, 190); 
     
    cairo.move_to (cr, 370, 220);
    cairo.line_to (cr, 470, 220);
    cairo.move_to (cr, 510, 220);
    cairo.line_to (cr, 520, 220);
    cairo.move_to (cr, 560, 220);
    cairo.line_to (cr, 660, 220); 
     
    cairo.stroke(cr);
     
    cairo.destroy (cr);
    cairo.surface_write_to_png (surface, "ibm.png");
    cairo.surface_destroy (surface);
    Images attachées Images attachées  

  2. #2
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    décembre 2011
    Messages
    3 210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : décembre 2011
    Messages : 3 210
    Points : 11 744
    Points
    11 744
    Billets dans le blog
    5

    Par défaut

    Un autre exemple, avec de "vraies" lettres.

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    -- http://www.ibm.com/developerworks/library/l-cairo/index.html
    -- http://www.ibm.com/developerworks/library/l-cairo/index.html#download
    -- http://www.dynaset.org/dogusanh/luacairo
     
    local cairo = require "lcairo";
    local CAIRO = cairo;
     
    local WIDTH = 400;
    local HEIGHT = 160;
     
    local DATA = {
      '  \\t    Tabulation horizontale    \\x09',
      '  \\n    Nouvelle ligne            \\x0a',
      '  \\r    Retour chariot            \\x0d',
      '  \\f    Nouvelle feuille          \\x0c',
      '  \\a    Cloche                    \\x07',
      '  \\e    Échappement               \\x1b'
    };
     
    surface = cairo.image_surface_create(CAIRO.FORMAT_ARGB32, WIDTH, HEIGHT);
    cr = cairo.create(surface);
     
    local pen_radius = 0.1;
     
    cairo.set_source_rgb(cr, 1.0, 1.0, 1.0);
    cairo.paint(cr);
     
    --cairo.set_source_rgba(cr, 0.0, 0.0, 0.0, 1.0);
    cairo.set_source_rgb(cr, 0.0, 0.0, 0.0);
    cairo.set_line_width(cr, pen_radius);
     
    for y = 0, 7 do
      cairo.move_to(cr, 0, 20 * y);
      cairo.line_to(cr, WIDTH, 20 * y);
    end
     
    cairo.select_font_face(cr, 'Courier New', CAIRO.FONT_SLANT_NORMAL, CAIRO.FONT_WEIGHT_NORMAL);
    cairo.set_font_size(cr, 16);
     
    for line = 1, #DATA do
      local s1, s2 = string.match(DATA[line], '(%S+)%s%s+(.+)%s%s+');
      cairo.move_to(cr, 20, 20 * (line + 1));
      cairo.show_text(cr, s1);
      cairo.move_to(cr, 80, 20 * (line + 1));
      cairo.show_text(cr, s2);
    end;
     
    cairo.stroke(cr);
     
    cairo.destroy(cr);
    cairo.surface_write_to_png(surface, 'table.png');
    cairo.surface_destroy(surface);
    Images attachées Images attachées  

Discussions similaires

  1. [Python 3.X] Créer une image png à partir d'une image de format quelconque avec Python
    Par bguy4 dans le forum Général Python
    Réponses: 3
    Dernier message: 30/10/2014, 10h49
  2. Réponses: 0
    Dernier message: 29/11/2011, 20h19
  3. Envoi d'un message avec une image png INLINE
    Par moctey dans le forum C#
    Réponses: 0
    Dernier message: 28/07/2010, 14h39
  4. decouper une image (.png) avec c++
    Par MSM_007 dans le forum C++
    Réponses: 1
    Dernier message: 07/02/2007, 08h11
  5. Obtention d'une image png avec gd2 inactive
    Par devt11 dans le forum GD
    Réponses: 1
    Dernier message: 05/03/2006, 16h44

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