25 #if MAGICKCORE_FREETYPE_DELEGATE 26 #define MakeLabel(image, text) image.label( (text) ) 28 #define MakeLabel(image, text) 31 int main(
int ,
char ** argv)
37 const char *
const p = getenv(
"MAGICK_FONT");
38 const string MAGICK_FONT(p ? p :
"");
43 if(getenv(
"SRCDIR") != 0)
44 srcdir = getenv(
"SRCDIR");
52 cout <<
"Read images ..." << endl;
54 Image model( srcdir +
"model.miff" );
59 Image smile( srcdir +
"smile.miff" );
66 cout <<
"Creating thumbnails..." << endl;
71 null.
read(
"NULL:black" );
72 list<Image> images( 7, null );
74 Image example = model;
82 cout <<
" add noise ..." << endl;
85 images.push_back( example );
87 cout <<
" add noise (blue) ..." << endl;
88 MakeLabel(example,
"Add Noise\n(Blue Channel)");
90 images.push_back( example );
92 #if MAGICKCORE_FREETYPE_DELEGATE 93 cout <<
" annotate ..." << endl;
98 example.
font(MAGICK_FONT);
101 example.
annotate(
"Magick++",
"+0+20", NorthGravity );
102 images.push_back( example );
105 cout <<
" blur ..." << endl;
108 example.
blur( 0, 1.5 );
109 images.push_back( example );
111 cout <<
" blur red channel ..." << endl;
113 MakeLabel(example,
"Blur Channel\n(Red Channel)");
115 images.push_back( example );
117 cout <<
" border ..." << endl;
122 images.push_back( example );
124 cout <<
" channel ..." << endl;
126 MakeLabel(example,
"Channel\n(Red Channel)");
128 images.push_back( example );
130 cout <<
" charcoal ..." << endl;
134 images.push_back( example );
136 cout <<
" composite ..." << endl;
139 example.
composite( smile,
"+35+65", OverCompositeOp);
140 images.push_back( example );
142 cout <<
" contrast ..." << endl;
146 images.push_back( example );
148 cout <<
" convolve ..." << endl;
153 const double kernel[] = { 1, 1, 1, 1, 4, 1, 1, 1, 1 };
156 images.push_back( example );
158 cout <<
" crop ..." << endl;
161 example.
crop(
"80x80+25+50" );
162 images.push_back( example );
164 cout <<
" despeckle ..." << endl;
168 images.push_back( example );
170 cout <<
" draw ..." << endl;
177 images.push_back( example );
179 cout <<
" edge ..." << endl;
183 images.push_back( example );
185 cout <<
" emboss ..." << endl;
189 images.push_back( example );
191 cout <<
" equalize ..." << endl;
195 images.push_back( example );
197 cout <<
" explode ..." << endl;
202 images.push_back( example );
204 cout <<
" flip ..." << endl;
208 images.push_back( example );
210 cout <<
" flop ..." << endl;
214 images.push_back( example );
216 cout <<
" frame ..." << endl;
220 images.push_back( example );
222 cout <<
" gamma ..." << endl;
225 example.
gamma( 1.6 );
226 images.push_back( example );
228 cout <<
" gaussian blur ..." << endl;
232 images.push_back( example );
234 cout <<
" gaussian blur channel ..." << endl;
236 MakeLabel(example,
"Gaussian Blur\n(Green Channel)");
238 images.push_back( example );
240 cout <<
" gradient ..." << endl;
242 gradient.
size(
"130x194" );
243 gradient.
read(
"gradient:#20a0ff-#ffff00" );
245 images.push_back( gradient );
247 cout <<
" grayscale ..." << endl;
252 images.push_back( example );
254 cout <<
" implode ..." << endl;
258 images.push_back( example );
260 cout <<
" level ..." << endl;
263 example.
level( 0.20*QuantumRange, 0.90*QuantumRange, 1.20 );
264 images.push_back( example );
266 cout <<
" level red channel ..." << endl;
268 MakeLabel(example,
"Level Channel\n(Red Channel)");
269 example.
levelChannel( RedChannel, 0.20*QuantumRange, 0.90*QuantumRange, 1.20 );
270 images.push_back( example );
272 cout <<
" median filter ..." << endl;
276 images.push_back( example );
278 cout <<
" modulate ..." << endl;
282 images.push_back( example );
284 cout <<
" monochrome ..." << endl;
291 images.push_back( example );
293 cout <<
" motion blur ..." << endl;
297 images.push_back( example );
299 cout <<
" negate ..." << endl;
303 images.push_back( example );
305 cout <<
" normalize ..." << endl;
309 images.push_back( example );
311 cout <<
" oil paint ..." << endl;
315 images.push_back( example );
317 cout <<
" ordered dither 2x2 ..." << endl;
319 MakeLabel(example,
"Ordered Dither\n(2x2)");
321 images.push_back( example );
323 cout <<
" ordered dither 3x3..." << endl;
325 MakeLabel(example,
"Ordered Dither\n(3x3)");
327 images.push_back( example );
329 cout <<
" ordered dither 4x4..." << endl;
331 MakeLabel(example,
"Ordered Dither\n(4x4)");
333 images.push_back( example );
335 cout <<
" ordered dither red 4x4..." << endl;
337 MakeLabel(example,
"Ordered Dither\n(Red 4x4)");
339 images.push_back( example );
341 cout <<
" plasma ..." << endl;
343 plasma.
size(
"130x194" );
344 plasma.
read(
"plasma:fractal" );
346 images.push_back( plasma );
348 cout <<
" quantize ..." << endl;
352 images.push_back( example );
354 cout <<
" quantum operator ..." << endl;
356 MakeLabel(example,
"Quantum Operator\nRed * 0.4");
357 example.
evaluate( RedChannel,MultiplyEvaluateOperator,0.40 );
358 images.push_back( example );
360 cout <<
" raise ..." << endl;
364 images.push_back( example );
366 cout <<
" reduce noise ..." << endl;
370 images.push_back( example );
372 cout <<
" resize ..." << endl;
375 example.
zoom(
"50%" );
376 images.push_back( example );
378 cout <<
" roll ..." << endl;
381 example.
roll(
"+20+10" );
382 images.push_back( example );
384 cout <<
" rotate ..." << endl;
389 images.push_back( example );
391 cout <<
" scale ..." << endl;
394 example.
scale(
"60%" );
395 images.push_back( example );
397 cout <<
" segment ..." << endl;
401 images.push_back( example );
403 cout <<
" shade ..." << endl;
406 example.
shade( 30, 30,
false );
407 images.push_back( example );
409 cout <<
" sharpen ..." << endl;
413 images.push_back( example );
415 cout <<
" shave ..." << endl;
419 images.push_back( example );
421 cout <<
" shear ..." << endl;
424 example.
shear( 45, 45 );
426 images.push_back( example );
428 cout <<
" spread ..." << endl;
432 images.push_back( example );
434 cout <<
" solarize ..." << endl;
438 images.push_back( example );
440 cout <<
" swirl ..." << endl;
445 images.push_back( example );
447 cout <<
" threshold ..." << endl;
451 images.push_back( example );
453 cout <<
" threshold random ..." << endl;
457 (0.85*QuantumRange) );
458 images.push_back( example );
460 cout <<
" unsharp mask ..." << endl;
465 images.push_back( example );
467 cout <<
" wave ..." << endl;
470 example.
alpha(
true );
472 example.
wave( 25, 150 );
473 images.push_back( example );
478 cout <<
"Montage images..." << endl;
483 montageOpts.
geometry(
"130x194+10+5>" );
484 montageOpts.gravity( CenterGravity );
485 montageOpts.borderColor(
"green" );
486 montageOpts.borderWidth( 1 );
487 montageOpts.tile(
"7x4" );
488 montageOpts.backgroundColor(
"#ffffff" );
489 montageOpts.pointSize( 18 );
490 montageOpts.font(MAGICK_FONT);
491 montageOpts.fillColor(
"#600" );
492 montageOpts.strokeColor(
Color() );
493 montageOpts.fileName(
"Magick++ Demo" );
494 montageImages( &montage, images.begin(), images.end(), montageOpts );
497 Image& montage_image = montage.front();
500 cout <<
"Adding logo image ..." << endl;
501 Image logo(
"logo:" );
506 montage_image.
composite( logo, placement, OverCompositeOp );
509 for_each( montage.begin(), montage.end(),
depthImage(8) );
510 for_each( montage.begin(), montage.end(),
alphaImage(
false ) );
513 cout <<
"Writing image \"demo_out.miff\" ..." << endl;
514 writeImages(montage.begin(),montage.end(),
"demo_out_%d.miff");
521 catch( exception &error_ )
523 cout <<
"Caught exception: " << error_.what() << endl;
void gaussianBlur(const double radius_, const double sigma_)
void swirl(const double degrees_)
class MagickPPExport Color
void modulate(const double brightness_, const double saturation_, const double hue_)
void annotate(const std::string &text_, const Geometry &location_)
void charcoal(const double radius_=0.0, const double sigma_=1.0)
void blur(const double radius_=0.0, const double sigma_=1.0)
void contrast(const bool sharpen_)
void medianFilter(const double radius_=0.0)
void composite(const Image &compositeImage_, const Geometry &offset_, const CompositeOperator compose_=InCompositeOp)
void unsharpmask(const double radius_, const double sigma_, const double amount_, const double threshold_)
void negate(const bool grayscale_=false)
#define MakeLabel(image, text)
void raise(const Geometry &geometry_=raiseGeometryDefault, const bool raisedFlag_=false)
void crop(const Geometry &geometry_)
void density(const Point &density_)
void shade(const double azimuth_=30, const double elevation_=30, const bool colorShading_=false)
void zoom(const Geometry &geometry_)
void strokeWidth(const double strokeWidth_)
void blurChannel(const ChannelType channel_, const double radius_=0.0, const double sigma_=1.0)
void strokeColor(const Color &strokeColor_)
void oilPaint(const double radius_=0.0, const double sigma=1.0)
void spread(const double amount_=3.0)
void randomThresholdChannel(const ChannelType channel_, const double low_, const double high_)
void motionBlur(const double radius_, const double sigma_, const double angle_)
void emboss(const double radius_=0.0, const double sigma_=1.0)
void segment(const double clusterThreshold_=1.0, const double smoothingThreshold_=1.5)
void sharpen(const double radius_=0.0, const double sigma_=1.0)
void montageImages(Container *montageImages_, InputIterator first_, InputIterator last_, const Montage &options_)
void solarize(const double factor_=50.0)
void geometry(const Geometry &geometry_)
void quantize(const bool measureError_=false)
void read(const Blob &blob_)
void frame(const Geometry &geometry_=frameGeometryDefault)
void shave(const Geometry &geometry_)
void borderColor(const Color &color_)
void font(const std::string &font_)
void fontPointsize(const double pointSize_)
class MagickPPExport Geometry
void writeImages(InputIterator first_, InputIterator last_, const std::string &imageSpec_, bool adjoin_=true)
void edge(const double radius_=0.0)
void fillColor(const Color &fillColor_)
void scale(const Geometry &geometry_)
void size(const Geometry &geometry_)
void draw(const Drawable &drawable_)
void randomThreshold(const double low_, const double high_)
void evaluate(const ChannelType channel_, const MagickEvaluateOperator operator_, double rvalue_)
void implode(const double factor_)
void addNoiseChannel(const ChannelType channel_, const NoiseType noiseType_, const double attenuate_=1.0)
void wave(const double amplitude_=25.0, const double wavelength_=150.0)
void threshold(const double threshold_)
void convolve(const size_t order_, const double *kernel_)
void roll(const Geometry &roll_)
void gaussianBlurChannel(const ChannelType channel_, const double radius_, const double sigma_)
void transparent(const Color &color_, const bool inverse_=false)
void alpha(const bool alphaFlag_)
void border(const Geometry &geometry_=borderGeometryDefault)
void addNoise(const NoiseType noiseType_, const double attenuate_=1.0)
size_t columns(void) const
void quantizeColors(const size_t colors_)
void levelChannel(const ChannelType channel_, const double blackPoint_, const double whitePoint_, const double gamma_=1.0)
void channel(const ChannelType channel_)
MagickPPExport void InitializeMagick(const char *path_)
int main(int, char **argv)
void backgroundColor(const Color &color_)
void quantizeDither(const bool ditherFlag_)
void level(const double blackPoint_, const double whitePoint_, const double gamma_=1.0)
void quantizeColorSpace(const ColorspaceType colorSpace_)
void shear(const double xShearAngle_, const double yShearAngle_)
void rotate(const double degrees_)