Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 895f6fb

Browse files
committed
Fix image artifacts with various kinds of interpolation (Thanks Darren
Dale for finding the bug). svn path=/trunk/matplotlib/; revision=4910
1 parent 8371fef commit 895f6fb

1 file changed

Lines changed: 49 additions & 37 deletions

File tree

src/_image.cpp

Lines changed: 49 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -409,50 +409,62 @@ Image::resize(const Py::Tuple& args, const Py::Dict& kwargs) {
409409
agg::render_scanlines(ras, sl, ri);
410410
}
411411
break;
412-
case BILINEAR:
413-
case BICUBIC:
414-
case SPLINE16:
415-
case SPLINE36:
416-
case HANNING:
417-
case HAMMING:
418-
case HERMITE:
419-
case KAISER:
420-
case QUADRIC:
421-
case CATROM:
422-
case GAUSSIAN:
423-
case BESSEL:
424-
case MITCHELL:
425-
case SINC:
426-
case LANCZOS:
427-
case BLACKMAN:
428-
{
429-
agg::image_filter_lut filter;
430-
switch(interpolation)
431-
{
432-
case BILINEAR: filter.calculate(agg::image_filter_bilinear(), norm); break;
433-
case BICUBIC: filter.calculate(agg::image_filter_bicubic(), norm); break;
434-
case SPLINE16: filter.calculate(agg::image_filter_spline16(), norm); break;
435-
case SPLINE36: filter.calculate(agg::image_filter_spline36(), norm); break;
436-
case HANNING: filter.calculate(agg::image_filter_hanning(), norm); break;
437-
case HAMMING: filter.calculate(agg::image_filter_hamming(), norm); break;
438-
case HERMITE: filter.calculate(agg::image_filter_hermite(), norm); break;
439-
case KAISER: filter.calculate(agg::image_filter_kaiser(), norm); break;
440-
case QUADRIC: filter.calculate(agg::image_filter_quadric(), norm); break;
441-
case CATROM: filter.calculate(agg::image_filter_catrom(), norm); break;
442-
case GAUSSIAN: filter.calculate(agg::image_filter_gaussian(), norm); break;
443-
case BESSEL: filter.calculate(agg::image_filter_bessel(), norm); break;
444-
case MITCHELL: filter.calculate(agg::image_filter_mitchell(), norm); break;
445-
case SINC: filter.calculate(agg::image_filter_sinc(radius), norm); break;
446-
case LANCZOS: filter.calculate(agg::image_filter_lanczos(radius), norm); break;
447-
case BLACKMAN: filter.calculate(agg::image_filter_blackman(radius), norm); break;
448-
}
412+
413+
case HANNING:
414+
case HAMMING:
415+
case HERMITE:
416+
{
417+
agg::image_filter_lut filter;
418+
switch (interpolation) {
419+
case HANNING: filter.calculate(agg::image_filter_hanning(), norm); break;
420+
case HAMMING: filter.calculate(agg::image_filter_hamming(), norm); break;
421+
case HERMITE: filter.calculate(agg::image_filter_hermite(), norm); break;
422+
}
449423
typedef agg::span_image_filter_rgba_2x2<img_accessor_type, interpolator_type> span_gen_type;
450424
typedef agg::renderer_scanline_aa<renderer_base, span_alloc_type, span_gen_type> renderer_type;
451425
span_gen_type sg(ia, interpolator, filter);
452426
renderer_type ri(rb, sa, sg);
453427
agg::render_scanlines(ras, sl, ri);
454428
}
455429
break;
430+
case BILINEAR:
431+
case BICUBIC:
432+
case SPLINE16:
433+
case SPLINE36:
434+
case KAISER:
435+
case QUADRIC:
436+
case CATROM:
437+
case GAUSSIAN:
438+
case BESSEL:
439+
case MITCHELL:
440+
case SINC:
441+
case LANCZOS:
442+
case BLACKMAN:
443+
{
444+
agg::image_filter_lut filter;
445+
switch(interpolation)
446+
{
447+
case BILINEAR: filter.calculate(agg::image_filter_bilinear(), norm); break;
448+
case BICUBIC: filter.calculate(agg::image_filter_bicubic(), norm); break;
449+
case SPLINE16: filter.calculate(agg::image_filter_spline16(), norm); break;
450+
case SPLINE36: filter.calculate(agg::image_filter_spline36(), norm); break;
451+
case KAISER: filter.calculate(agg::image_filter_kaiser(), norm); break;
452+
case QUADRIC: filter.calculate(agg::image_filter_quadric(), norm); break;
453+
case CATROM: filter.calculate(agg::image_filter_catrom(), norm); break;
454+
case GAUSSIAN: filter.calculate(agg::image_filter_gaussian(), norm); break;
455+
case BESSEL: filter.calculate(agg::image_filter_bessel(), norm); break;
456+
case MITCHELL: filter.calculate(agg::image_filter_mitchell(), norm); break;
457+
case SINC: filter.calculate(agg::image_filter_sinc(radius), norm); break;
458+
case LANCZOS: filter.calculate(agg::image_filter_lanczos(radius), norm); break;
459+
case BLACKMAN: filter.calculate(agg::image_filter_blackman(radius), norm); break;
460+
}
461+
typedef agg::span_image_filter_rgba<img_accessor_type, interpolator_type> span_gen_type;
462+
typedef agg::renderer_scanline_aa<renderer_base, span_alloc_type, span_gen_type> renderer_type;
463+
span_gen_type sg(ia, interpolator, filter);
464+
renderer_type ri(rb, sa, sg);
465+
agg::render_scanlines(ras, sl, ri);
466+
}
467+
break;
456468

457469
}
458470

0 commit comments

Comments
 (0)