ROOT logo

From $ROOTSYS/tutorials/image/rose_image.C

#include "TImage.h"
#include "TCanvas.h"
#include "TArrayD.h"
#include "TROOT.h"
#include "TColor.h"
#include "TAttImage.h"
#include "TEnv.h"

TCanvas *c1;

void rose_image()
{
   // Display image in a new canvas and pad.
   //Author: Valeriy Onuchin
   
   TImage *img = TImage::Open("rose512.jpg");

   if (!img) {
      printf("Could not create an image... exit\n");
      return;
   }

   img->SetConstRatio(0);
   img->SetImageQuality(TAttImage::kImgBest);

   TString fp = gEnv->GetValue("Root.TTFontPath", "");
   TString bc = fp + "/BlackChancery.ttf";
   TString ar = fp + "/arial.ttf";

   // draw text over image with funny font
   img->DrawText(120, 160, "Hello World!", 32, 
                 gROOT->GetColor(4)->AsHexString(), 
                 bc, TImage::kShadeBelow);

   // draw text over image with foreground specified by pixmap
   img->DrawText(250, 350, "goodbye cruel world ...", 24, 0, 
                 ar, TImage::kPlain, "fore.xpm");

   TImage *img2 = TImage::Open("mditestbg.xpm");

   // tile image
   img2->Tile(img->GetWidth(), img->GetHeight());

   c1 = new TCanvas("rose512", "examples of image manipulations", 760, 900);
   c1->Divide(2, 3);
   c1->cd(1);
   img->Draw("xxx");
   img->SetEditable(kTRUE);

   c1->cd(2);
   // averaging with mditestbg.xpm image
   TImage *img3 = (TImage*)img->Clone("img3");
   img3->Merge(img2, "allanon");
   img3->Draw();

   // contrasting (tint with itself)
   c1->cd(3);
   TImage *img4 = (TImage*)img->Clone("img4");
   img4->Merge(img4, "tint");

   // draw filled rectangle with magenta color
   img4->FillRectangle("#FF00FF", 20, 220, 40, 40);

   // Render multipoint alpha-blended gradient (R->G->B)
   img4->Gradient(0, "#FF0000 #00FF00 #220000FF", 0, 50, 50, 100, 100);

   // draw semi-transparent 3D button
   img4->Bevel(300, 20, 160, 40, "#ffffffff", "#fe000000", 3, 0);
   img4->DrawLine(10, 100, 100, 10, "#0000ff", 4);
   img4->Draw();

   // vectorize image. Reduce palette to 256 colors
   c1->cd(4);
   TImage *img5 = (TImage*)img->Clone("img5");
   img5->Vectorize(256);
   img5->Draw();

   // quantization of the image
   c1->cd(5);
   TImage *img6 = (TImage*)img->Clone("img6");
   TImagePalette *pal = (TImagePalette *)&img5->GetPalette();
   TArrayD *arr = img6->GetArray(50, 40, pal);
   img6->SetImage(arr->GetArray(), 50, 40, pal);
   img6->Draw();

   // HSV adjustment (convert red to yellow)
   c1->cd(6);
   TImage *img7 = (TImage*)img->Clone("img7");
   img7->HSV(0, 40, 40);
   img7->Draw();
}
 rose_image.C:1
 rose_image.C:2
 rose_image.C:3
 rose_image.C:4
 rose_image.C:5
 rose_image.C:6
 rose_image.C:7
 rose_image.C:8
 rose_image.C:9
 rose_image.C:10
 rose_image.C:11
 rose_image.C:12
 rose_image.C:13
 rose_image.C:14
 rose_image.C:15
 rose_image.C:16
 rose_image.C:17
 rose_image.C:18
 rose_image.C:19
 rose_image.C:20
 rose_image.C:21
 rose_image.C:22
 rose_image.C:23
 rose_image.C:24
 rose_image.C:25
 rose_image.C:26
 rose_image.C:27
 rose_image.C:28
 rose_image.C:29
 rose_image.C:30
 rose_image.C:31
 rose_image.C:32
 rose_image.C:33
 rose_image.C:34
 rose_image.C:35
 rose_image.C:36
 rose_image.C:37
 rose_image.C:38
 rose_image.C:39
 rose_image.C:40
 rose_image.C:41
 rose_image.C:42
 rose_image.C:43
 rose_image.C:44
 rose_image.C:45
 rose_image.C:46
 rose_image.C:47
 rose_image.C:48
 rose_image.C:49
 rose_image.C:50
 rose_image.C:51
 rose_image.C:52
 rose_image.C:53
 rose_image.C:54
 rose_image.C:55
 rose_image.C:56
 rose_image.C:57
 rose_image.C:58
 rose_image.C:59
 rose_image.C:60
 rose_image.C:61
 rose_image.C:62
 rose_image.C:63
 rose_image.C:64
 rose_image.C:65
 rose_image.C:66
 rose_image.C:67
 rose_image.C:68
 rose_image.C:69
 rose_image.C:70
 rose_image.C:71
 rose_image.C:72
 rose_image.C:73
 rose_image.C:74
 rose_image.C:75
 rose_image.C:76
 rose_image.C:77
 rose_image.C:78
 rose_image.C:79
 rose_image.C:80
 rose_image.C:81
 rose_image.C:82
 rose_image.C:83
 rose_image.C:84
 rose_image.C:85
 rose_image.C:86
 rose_image.C:87
 rose_image.C:88
 rose_image.C:89
 rose_image.C:90
 rose_image.C:91
 rose_image.C:92
thumb