{
PixelChannel channel=GetPixelChannelChannel(image,i);
PixelTrait traits=GetPixelChannelTraits(image,channel);
- if ((traits & (CopyPixelTrait | UpdatePixelTrait)) == 0)
+ PixelTrait frame_traits=GetPixelChannelTraits(frame_image,channel);
+ if ((traits == UndefinedPixelTrait) ||
+ (frame_traits == UndefinedPixelTrait))
continue;
- q[i]=p[i];
+ SetPixelChannel(frame_image,channel,p[i],q);
}
SetPixelRed(frame_image,GetPixelRed(image,p),q);
SetPixelGreen(frame_image,GetPixelGreen(image,p),q);
if ((traits == UndefinedPixelTrait) ||
(morphology_traits == UndefinedPixelTrait))
continue;
- if (((morphology_traits & CopyPixelTrait) != 0) ||
- (GetPixelReadMask(image,p+center) == 0))
+ if (GetPixelReadMask(image,p+center) == 0)
{
SetPixelChannel(morphology_image,channel,p[center+i],q);
continue;
http://www.cs.umd.edu/~djacobs/CMSC426/Convolution.pdf
*/
k=(&kernel->values[kernel->width*kernel->height-1]);
- count=0;
if ((morphology_traits & BlendPixelTrait) == 0)
{
/*
for (u=0; u < (ssize_t) kernel->width; u++)
{
if (IfNaN(*k) == MagickFalse)
- {
- pixel+=(*k)*pixels[i];
- count++;
- }
+ pixel+=(*k)*pixels[i];
k--;
pixels+=GetPixelChannels(image);
}
/*
Alpha blending.
*/
+ count=0;
+ gamma=0.0;
+ alpha=1.0;
for (v=0; v < (ssize_t) kernel->height; v++)
{
for (u=0; u < (ssize_t) kernel->width; u++)
{
if (IfNaN(*k) == MagickFalse)
{
- alpha=(double) (QuantumScale*GetPixelAlpha(image,pixels));
- pixel+=(*k)*alpha*pixels[i];
- gamma+=(*k)*alpha;
+ if (channel != AlphaPixelChannel)
+ alpha=(double) (QuantumScale*GetPixelAlpha(image,pixels));
+ pixel+=alpha*(*k)*pixels[i];
+ gamma+=alpha*(*k);
count++;
}
k--;
p+=GetPixelChannels(image);
q+=GetPixelChannels(morphology_image);
}
- if ( SyncCacheViewAuthenticPixels(morphology_view,exception) == MagickFalse)
+ if (SyncCacheViewAuthenticPixels(morphology_view,exception) == MagickFalse)
status=MagickFalse;
if (image->progress_monitor != (MagickProgressMonitor) NULL)
{
splice_image=DestroyImage(splice_image);
return((Image *) NULL);
}
+ if ((IsPixelInfoGray(&splice_image->background_color) == MagickFalse) &&
+ (IsGrayColorspace(splice_image->colorspace) != MagickFalse))
+ (void) SetImageColorspace(splice_image,sRGBColorspace,exception);
+ if ((splice_image->background_color.alpha_trait == BlendPixelTrait) &&
+ (splice_image->alpha_trait != BlendPixelTrait))
+ (void) SetImageAlpha(splice_image,OpaqueAlpha,exception);
(void) SetImageBackgroundColor(splice_image,exception);
/*
Respect image geometry.
continue;
SetPixelChannel(splice_image,channel,p[i],q);
}
+ SetPixelRed(splice_image,GetPixelRed(image,p),q);
+ SetPixelGreen(splice_image,GetPixelGreen(image,p),q);
+ SetPixelBlue(splice_image,GetPixelBlue(image,p),q);
+ SetPixelAlpha(splice_image,GetPixelAlpha(image,p),q);
p+=GetPixelChannels(image);
q+=GetPixelChannels(splice_image);
}
continue;
SetPixelChannel(splice_image,channel,p[i],q);
}
+ SetPixelRed(splice_image,GetPixelRed(image,p),q);
+ SetPixelGreen(splice_image,GetPixelGreen(image,p),q);
+ SetPixelBlue(splice_image,GetPixelBlue(image,p),q);
+ SetPixelAlpha(splice_image,GetPixelAlpha(image,p),q);
p+=GetPixelChannels(image);
q+=GetPixelChannels(splice_image);
}
continue;
SetPixelChannel(splice_image,channel,p[i],q);
}
+ SetPixelRed(splice_image,GetPixelRed(image,p),q);
+ SetPixelGreen(splice_image,GetPixelGreen(image,p),q);
+ SetPixelBlue(splice_image,GetPixelBlue(image,p),q);
+ SetPixelAlpha(splice_image,GetPixelAlpha(image,p),q);
p+=GetPixelChannels(image);
q+=GetPixelChannels(splice_image);
}
continue;
SetPixelChannel(splice_image,channel,p[i],q);
}
+ SetPixelRed(splice_image,GetPixelRed(image,p),q);
+ SetPixelGreen(splice_image,GetPixelGreen(image,p),q);
+ SetPixelBlue(splice_image,GetPixelBlue(image,p),q);
+ SetPixelAlpha(splice_image,GetPixelAlpha(image,p),q);
p+=GetPixelChannels(image);
q+=GetPixelChannels(splice_image);
}