- Add ImageMagick 6.8.3-1 sources
This commit is contained in:
parent
b8db71063c
commit
615ec83706
3424 changed files with 1398702 additions and 0 deletions
116
ImageMagick-6.8.3-1/www/source/core/sigmoidal-contrast.c
Normal file
116
ImageMagick-6.8.3-1/www/source/core/sigmoidal-contrast.c
Normal file
|
@ -0,0 +1,116 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <math.h>
|
||||
#include <magick/MagickCore.h>
|
||||
|
||||
static MagickBooleanType SigmoidalContrast(ImageView *contrast_view,
|
||||
const ssize_t y,const int id,void *context)
|
||||
{
|
||||
#define QuantumScale ((MagickRealType) 1.0/(MagickRealType) QuantumRange)
|
||||
#define SigmoidalContrast(x) \
|
||||
(QuantumRange*(1.0/(1+exp(10.0*(0.5-QuantumScale*x)))-0.0066928509)*1.0092503)
|
||||
|
||||
RectangleInfo
|
||||
extent;
|
||||
|
||||
register IndexPacket
|
||||
*indexes;
|
||||
|
||||
register PixelPacket
|
||||
*pixels;
|
||||
|
||||
register ssize_t
|
||||
x;
|
||||
|
||||
extent=GetImageViewExtent(contrast_view);
|
||||
pixels=GetImageViewAuthenticPixels(contrast_view);
|
||||
for (x=0; x < (ssize_t) (extent.width-extent.height); x++)
|
||||
{
|
||||
pixels[x].red=RoundToQuantum(SigmoidalContrast(pixels[x].red));
|
||||
pixels[x].green=RoundToQuantum(SigmoidalContrast(pixels[x].green));
|
||||
pixels[x].blue=RoundToQuantum(SigmoidalContrast(pixels[x].blue));
|
||||
pixels[x].opacity=RoundToQuantum(SigmoidalContrast(pixels[x].opacity));
|
||||
}
|
||||
indexes=GetImageViewAuthenticIndexes(contrast_view);
|
||||
if (indexes != (IndexPacket *) NULL)
|
||||
for (x=0; x < (ssize_t) (extent.width-extent.height); x++)
|
||||
indexes[x]=(IndexPacket) RoundToQuantum(SigmoidalContrast(indexes[x]));
|
||||
return(MagickTrue);
|
||||
}
|
||||
|
||||
int main(int argc,char **argv)
|
||||
{
|
||||
#define ThrowImageException(image) \
|
||||
{ \
|
||||
\
|
||||
CatchException(exception); \
|
||||
if (contrast_image != (Image *) NULL) \
|
||||
contrast_image=DestroyImage(contrast_image); \
|
||||
exit(-1); \
|
||||
}
|
||||
#define ThrowViewException(view) \
|
||||
{ \
|
||||
char \
|
||||
*description; \
|
||||
\
|
||||
ExceptionType \
|
||||
severity; \
|
||||
\
|
||||
description=GetImageViewException(view,&severity); \
|
||||
(void) fprintf(stderr,"%s %s %lu %s\n",GetMagickModule(),description); \
|
||||
description=(char *) MagickRelinquishMemory(description); \
|
||||
exit(-1); \
|
||||
}
|
||||
|
||||
ExceptionInfo
|
||||
*exception;
|
||||
|
||||
Image
|
||||
*contrast_image;
|
||||
|
||||
ImageInfo
|
||||
*image_info;
|
||||
|
||||
ImageView
|
||||
*contrast_view;
|
||||
|
||||
MagickBooleanType
|
||||
status;
|
||||
|
||||
if (argc != 3)
|
||||
{
|
||||
(void) fprintf(stdout,"Usage: %s image sigmoidal-image\n",argv[0]);
|
||||
exit(0);
|
||||
}
|
||||
/*
|
||||
Read an image.
|
||||
*/
|
||||
MagickCoreGenesis(*argv,MagickTrue);
|
||||
image_info=AcquireImageInfo();
|
||||
(void) CopyMagickString(image_info->filename,argv[1],MaxTextExtent);
|
||||
exception=AcquireExceptionInfo();
|
||||
contrast_image=ReadImage(image_info,exception);
|
||||
if (contrast_image == (Image *) NULL)
|
||||
ThrowImageException(contrast_image);
|
||||
/*
|
||||
Sigmoidal non-linearity contrast control.
|
||||
*/
|
||||
contrast_view=NewImageView(contrast_image);
|
||||
if (contrast_view == (ImageView *) NULL)
|
||||
ThrowImageException(contrast_image);
|
||||
status=UpdateImageViewIterator(contrast_view,SigmoidalContrast,(void *) NULL);
|
||||
if (status == MagickFalse)
|
||||
ThrowImageException(contrast_image);
|
||||
contrast_view=DestroyImageView(contrast_view);
|
||||
/*
|
||||
Write the image then destroy it.
|
||||
*/
|
||||
status=WriteImages(image_info,contrast_image,argv[2],exception);
|
||||
if (status == MagickFalse)
|
||||
ThrowImageException(contrast_image);
|
||||
contrast_image=DestroyImage(contrast_image);
|
||||
exception=DestroyExceptionInfo(exception);
|
||||
image_info=DestroyImageInfo(image_info);
|
||||
MagickCoreTerminus();
|
||||
return(0);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue