pad2png.C: Create a canvas and save as png. | Image Processing | trans_graph.C: Demonstrates how to access and manipulate ARGB pixel values of an image +... |
#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 |
|