本文整理汇总了C++中AppendImageToList函数的典型用法代码示例。如果您正苦于以下问题:C++ AppendImageToList函数的具体用法?C++ AppendImageToList怎么用?C++ AppendImageToList使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了AppendImageToList函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: SpliceImageIntoList
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% S p l i c e I m a g e I n t o L i s t %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% SpliceImageIntoList() removes 'length' images from the list and replaces
% them with the specified splice. Removed images are returned.
%
% The format of the SpliceImageIntoList method is:
%
% SpliceImageIntoList(Image **images,const unsigned long,
% const Image *splice)
%
% A description of each parameter follows:
%
% o images: the image list.
%
% o length: the length of the image list to remove.
%
% o splice: Replace the removed image list with this list.
%
*/
MagickExport Image *SpliceImageIntoList(Image **images,
const unsigned long length,const Image *splice)
{
Image
*image,
*split;
register unsigned long
i;
assert(images != (Image **) NULL);
assert(splice != (Image *) NULL);
assert(splice->signature == MagickSignature);
if ((*images) == (Image *) NULL)
return((Image *) NULL);
assert((*images)->signature == MagickSignature);
if ((*images)->debug != MagickFalse)
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",
(*images)->filename);
split=SplitImageList(*images);
AppendImageToList(images,splice);
image=(Image *) NULL;
for (i=0; (i < length) && (split != (Image *) NULL); i++)
AppendImageToList(&image,RemoveImageFromList(&split));
AppendImageToList(images,split);
return(image);
}
开发者ID:0xPr0xy,项目名称:ImageMagick,代码行数:55,代码来源:list.c
示例2: SeparateImages
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% S e p a r a t e I m a g e s %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% SeparateImages() returns a separate grayscale image for each channel
% specified.
%
% The format of the SeparateImages method is:
%
% Image *SeparateImages(const Image *image,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
% o image: the image.
%
% o exception: return any errors or warnings in this structure.
%
*/
MagickExport Image *SeparateImages(const Image *image,ExceptionInfo *exception)
{
Image
*images,
*separate_image;
register ssize_t
i;
assert(image != (Image *) NULL);
assert(image->signature == MagickSignature);
if (image->debug != MagickFalse)
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
images=NewImageList();
for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
{
PixelChannel channel=GetPixelChannelChannel(image,i);
PixelTrait traits=GetPixelChannelTraits(image,channel);
if ((traits == UndefinedPixelTrait) ||
((traits & UpdatePixelTrait) == 0))
continue;
separate_image=SeparateImage(image,(ChannelType) (1 << channel),exception);
if (separate_image != (Image *) NULL)
AppendImageToList(&images,separate_image);
}
if (images == (Image *) NULL)
images=SeparateImage(image,UndefinedChannel,exception);
return(images);
}
开发者ID:saitoha,项目名称:ImageMagick-V7-SIXEL,代码行数:54,代码来源:channel.c
示例3: while
Image *AutoResizeImage(const Image *image,const char *option,
MagickOffsetType *count,ExceptionInfo *exception)
{
#define MAX_SIZES 16
char
*q;
const char
*p;
Image
*resized,
*images;
register ssize_t
i;
size_t
sizes[MAX_SIZES]={256,192,128,96,64,48,40,32,24,16};
images=NULL;
*count=0;
i=0;
p=option;
while (*p != '\0' && i < MAX_SIZES)
{
size_t
size;
while ((isspace((int) ((unsigned char) *p)) != 0))
p++;
size=(size_t)strtol(p,&q,10);
if ((p == q) || (size < 16) || (size > 256))
return((Image *) NULL);
p=q;
sizes[i++]=size;
while ((isspace((int) ((unsigned char) *p)) != 0) || (*p == ','))
p++;
}
if (i==0)
i=10;
*count=i;
for (i=0; i < *count; i++)
{
resized=ResizeImage(image,sizes[i],sizes[i],image->filter,exception);
if (resized == (Image *) NULL)
return(DestroyImageList(images));
if (images == (Image *) NULL)
images=resized;
else
AppendImageToList(&images,resized);
}
return(images);
}
开发者ID:DINKIN,项目名称:ImageMagick,代码行数:60,代码来源:icon.c
示例4: images_from_imagelist
/**
* Convert an array of Image *s to an ImageMagick scene sequence (i.e. a
* doubly-linked list of Images).
*
* No Ruby usage (internal function)
*
* @param imagelist the imagelist
* @return a pointer to the head of the scene sequence list
* @see rm_imagelist_from_images
*/
static Image *
images_from_imagelist(VALUE imagelist)
{
long x, len;
Image *head = NULL;
VALUE images, t;
len = check_imagelist_length(imagelist);
images = rb_iv_get(imagelist, "@images");
for (x = 0; x < len; x++)
{
Image *image;
t = rb_ary_entry(images, x);
image = rm_check_destroyed(t);
// avoid a loop in this linked imagelist, issue #202
if (head == image || GetPreviousImageInList(image) != NULL)
{
image = rm_clone_image(image);
}
AppendImageToList(&head, image);
}
RB_GC_GUARD(images);
RB_GC_GUARD(t);
return head;
}
开发者ID:ABaumgaertner,项目名称:rmagick,代码行数:39,代码来源:rmilist.c
示例5: sequence
/*
Extern: images_from_imagelist
Purpose: Convert an array of Image *s to an ImageMagick scene
sequence (i.e. a doubly-linked list of Images)
Returns: a pointer to the head of the scene sequence list
*/
static Image *
images_from_imagelist(VALUE imagelist)
{
long x, len;
Image *head = NULL;
volatile VALUE images, t;
len = imagelist_length(imagelist);
if (len == 0)
{
rb_raise(rb_eArgError, "no images in this image list");
}
images = rb_iv_get(imagelist, "@images");
for (x = 0; x < len; x++)
{
Image *image;
t = rb_ary_entry(images, x);
image = rm_check_destroyed(t);
AppendImageToList(&head, image);
}
return head;
}
开发者ID:Flagship8787,项目名称:Suwaru-Rails,代码行数:31,代码来源:rmilist.c
示例6: InsertImageInList
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% I n s e r t I m a g e I n L i s t %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% InsertImageInList() inserts the second image or image list into the first
% image list immediatally after the image pointed to. The given image list
% pointer is unchanged unless previously empty.
%
% The format of the InsertImageInList method is:
%
% InsertImageInList(Image **images,Image *image)
%
% A description of each parameter follows:
%
% o images: the image list to insert into.
%
% o image: the image list to insert.
%
*/
MagickExport void InsertImageInList(Image **images,Image *image)
{
Image
*split;
assert(images != (Image **) NULL);
assert(image != (Image *) NULL);
assert(image->signature == MagickSignature);
if (image->debug != MagickFalse)
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
if ((*images) == (Image *) NULL)
return;
assert((*images)->signature == MagickSignature);
split=SplitImageList(*images);
AppendImageToList(images,image);
AppendImageToList(images,split);
}
开发者ID:0xPr0xy,项目名称:ImageMagick,代码行数:43,代码来源:list.c
示例7: PingImages
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% P i n g I m a g e s %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% PingImages() pings one or more images and returns them as an image list.
%
% The format of the PingImage method is:
%
% Image *PingImages(const ImageInfo *image_info,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
% o image_info: the image info.
%
% o exception: return any errors or warnings in this structure.
%
*/
MagickExport Image *PingImages(const ImageInfo *image_info,
ExceptionInfo *exception)
{
char
filename[MaxTextExtent];
Image
*image,
*images;
ImageInfo
*read_info;
/*
Ping image list from a file.
*/
assert(image_info != (ImageInfo *) NULL);
assert(image_info->signature == MagickSignature);
if (image_info->debug != MagickFalse)
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",
image_info->filename);
assert(exception != (ExceptionInfo *) NULL);
(void) InterpretImageFilename(image_info,(Image *) NULL,image_info->filename,
(int) image_info->scene,filename,exception);
if (LocaleCompare(filename,image_info->filename) != 0)
{
ExceptionInfo
*sans;
ssize_t
extent,
scene;
/*
Images of the form image-%d.png[1-5].
*/
read_info=CloneImageInfo(image_info);
sans=AcquireExceptionInfo();
(void) SetImageInfo(read_info,0,sans);
sans=DestroyExceptionInfo(sans);
(void) CopyMagickString(filename,read_info->filename,MaxTextExtent);
images=NewImageList();
extent=(ssize_t) (read_info->scene+read_info->number_scenes);
for (scene=(ssize_t) read_info->scene; scene < (ssize_t) extent; scene++)
{
(void) InterpretImageFilename(image_info,(Image *) NULL,filename,(int)
scene,read_info->filename,exception);
image=PingImage(read_info,exception);
if (image == (Image *) NULL)
continue;
AppendImageToList(&images,image);
}
read_info=DestroyImageInfo(read_info);
return(images);
}
return(PingImage(image_info,exception));
}
开发者ID:ChaseReid,项目名称:ImageMagick,代码行数:81,代码来源:constitute.c
示例8: SeparateImages
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% S e p a r a t e I m a g e s %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% SeparateImages() returns a separate grayscale image for each channel
% specified.
%
% The format of the SeparateImages method is:
%
% MagickBooleanType SeparateImages(const Image *image,
% const ChannelType channel,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
% o image: the image.
%
% o channel: Identify which channels to extract: RedChannel, GreenChannel,
% BlueChannel, OpacityChannel, CyanChannel, MagentaChannel,
% YellowChannel, or BlackChannel.
%
% o exception: return any errors or warnings in this structure.
%
*/
MagickExport Image *SeparateImages(const Image *image,const ChannelType channel,
ExceptionInfo *exception)
{
Image
*images,
*separate_image;
assert(image != (Image *) NULL);
assert(image->signature == MagickSignature);
if (image->debug != MagickFalse)
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
images=NewImageList();
if ((channel & RedChannel) != 0)
{
separate_image=CloneImage(image,0,0,MagickTrue,exception);
(void) SeparateImageChannel(separate_image,RedChannel);
AppendImageToList(&images,separate_image);
}
if ((channel & GreenChannel) != 0)
{
separate_image=CloneImage(image,0,0,MagickTrue,exception);
(void) SeparateImageChannel(separate_image,GreenChannel);
AppendImageToList(&images,separate_image);
}
if ((channel & BlueChannel) != 0)
{
separate_image=CloneImage(image,0,0,MagickTrue,exception);
(void) SeparateImageChannel(separate_image,BlueChannel);
AppendImageToList(&images,separate_image);
}
if (((channel & BlackChannel) != 0) && (image->colorspace == CMYKColorspace))
{
separate_image=CloneImage(image,0,0,MagickTrue,exception);
(void) SeparateImageChannel(separate_image,BlackChannel);
AppendImageToList(&images,separate_image);
}
if ((channel & AlphaChannel) != 0)
{
separate_image=CloneImage(image,0,0,MagickTrue,exception);
(void) SeparateImageChannel(separate_image,TrueAlphaChannel);
AppendImageToList(&images,separate_image);
}
return(images);
}
开发者ID:abzolute0,项目名称:Ruby_Blog,代码行数:74,代码来源:channel.c
示例9: clone_imagelist
/**
* Clone a list of images, handle errors.
*
* No Ruby usage (internal function)
*
* @param images the images
* @return a new array of images
*/
static Image *
clone_imagelist(Image *images)
{
Image *new_imagelist = NULL, *image, *clone;
ExceptionInfo *exception;
exception = AcquireExceptionInfo();
image = GetFirstImageInList(images);
while (image)
{
clone = CloneImage(image, 0, 0, MagickTrue, exception);
rm_check_exception(exception, new_imagelist, DestroyOnError);
AppendImageToList(&new_imagelist, clone);
image = GetNextImageInList(image);
}
(void) DestroyExceptionInfo(exception);
return new_imagelist;
}
开发者ID:ABaumgaertner,项目名称:rmagick,代码行数:28,代码来源:rmilist.c
示例10: sequence
/*
Extern: images_from_imagelist
Purpose: Convert an array of Image *s to an ImageMagick scene
sequence (i.e. a doubly-linked list of Images)
Returns: a pointer to the head of the scene sequence list
*/
static Image *
images_from_imagelist(VALUE imagelist)
{
long x, len;
Image *head = NULL;
volatile VALUE images, t;
len = check_imagelist_length(imagelist);
images = rb_iv_get(imagelist, "@images");
for (x = 0; x < len; x++)
{
Image *image;
t = rb_ary_entry(images, x);
image = rm_check_destroyed(t);
AppendImageToList(&head, image);
}
return head;
}
开发者ID:Des,项目名称:your_app_name,代码行数:27,代码来源:rmilist.c
示例11: load_images
static int load_images(LogoPrivateData *pd)
{
Image *timg;
Image *nimg;
pd->images = GetFirstImageInList(pd->magick.image);
nimg = NewImageList();
while (pd->images != (Image *)NULL) {
if (pd->flip) {
timg = FlipImage(pd->images,
&pd->magick.exception_info);
if (timg == NULL) {
CatchException(&pd->magick.exception_info);
return TC_ERROR;
}
AppendImageToList(&nimg, timg);
}
pd->images = GetNextImageInList(pd->images);
pd->nr_of_images++;
}
// check for memleaks;
//DestroyImageList(image);
if (pd->flip) {
/* DANGEROUS!!! */
pd->magick.image = nimg;
}
/* for running through image sequence */
/* DANGEROUS!!! */
pd->images = pd->magick.image;
return TC_OK;
}
开发者ID:BackupTheBerlios,项目名称:tcforge,代码行数:36,代码来源:filter_logo.c
示例12: ThrowMagickException
MagickExport Image *ForwardFourierTransformImage(const Image *image,
const MagickBooleanType modulus,ExceptionInfo *exception)
{
Image
*fourier_image;
fourier_image=NewImageList();
#if !defined(MAGICKCORE_FFTW_DELEGATE)
(void) modulus;
(void) ThrowMagickException(exception,GetMagickModule(),
MissingDelegateWarning,"DelegateLibrarySupportNotBuiltIn","`%s' (FFTW)",
image->filename);
#else
{
Image
*magnitude_image;
size_t
extent,
width;
width=image->columns;
if ((image->columns != image->rows) || ((image->columns % 2) != 0) ||
((image->rows % 2) != 0))
{
extent=image->columns < image->rows ? image->rows : image->columns;
width=(extent & 0x01) == 1 ? extent+1UL : extent;
}
magnitude_image=CloneImage(image,width,width,MagickFalse,exception);
if (magnitude_image != (Image *) NULL)
{
Image
*phase_image;
magnitude_image->storage_class=DirectClass;
magnitude_image->depth=32UL;
phase_image=CloneImage(image,width,width,MagickFalse,exception);
if (phase_image == (Image *) NULL)
magnitude_image=DestroyImage(magnitude_image);
else
{
MagickBooleanType
is_gray,
status;
phase_image->storage_class=DirectClass;
phase_image->depth=32UL;
AppendImageToList(&fourier_image,magnitude_image);
AppendImageToList(&fourier_image,phase_image);
status=MagickTrue;
is_gray=IsGrayImage(image,exception);
#if defined(MAGICKCORE_OPENMP_SUPPORT)
#pragma omp parallel sections
#endif
{
#if defined(MAGICKCORE_OPENMP_SUPPORT)
#pragma omp section
#endif
{
MagickBooleanType
thread_status;
if (is_gray != MagickFalse)
thread_status=ForwardFourierTransformChannel(image,
GrayChannels,modulus,fourier_image,exception);
else
thread_status=ForwardFourierTransformChannel(image,
RedChannel,modulus,fourier_image,exception);
if (thread_status == MagickFalse)
status=thread_status;
}
#if defined(MAGICKCORE_OPENMP_SUPPORT)
#pragma omp section
#endif
{
MagickBooleanType
thread_status;
thread_status=MagickTrue;
if (is_gray == MagickFalse)
thread_status=ForwardFourierTransformChannel(image,
GreenChannel,modulus,fourier_image,exception);
if (thread_status == MagickFalse)
status=thread_status;
}
#if defined(MAGICKCORE_OPENMP_SUPPORT)
#pragma omp section
#endif
{
MagickBooleanType
thread_status;
thread_status=MagickTrue;
if (is_gray == MagickFalse)
thread_status=ForwardFourierTransformChannel(image,
BlueChannel,modulus,fourier_image,exception);
if (thread_status == MagickFalse)
status=thread_status;
}
#if defined(MAGICKCORE_OPENMP_SUPPORT)
//.........这里部分代码省略.........
开发者ID:0xPr0xy,项目名称:ImageMagick,代码行数:101,代码来源:fourier.c
示例13: ReadJNXImage
//.........这里部分代码省略.........
offset=SeekBlob(image,(MagickOffsetType) jnx_level_info[i].offset,SEEK_SET);
if (offset != (MagickOffsetType) jnx_level_info[i].offset)
continue;
for (j=0; j < (ssize_t) jnx_level_info[i].count; j++)
{
Image
*tile_image;
ImageInfo
*read_info;
int
tile_offset;
MagickOffsetType
restore_offset;
PointInfo
northeast,
southwest;
ssize_t
count;
unsigned char
*blob;
unsigned int
tile_length;
northeast.x=180.0*((int) ReadBlobLSBLong(image))/0x7fffffff;
northeast.y=180.0*((int) ReadBlobLSBLong(image))/0x7fffffff;
southwest.x=180.0*((int) ReadBlobLSBLong(image))/0x7fffffff;
southwest.y=180.0*((int) ReadBlobLSBLong(image))/0x7fffffff;
(void) ReadBlobLSBShort(image); /* width */
(void) ReadBlobLSBShort(image); /* height */
tile_length=ReadBlobLSBLong(image);
tile_offset=(int) ReadBlobLSBLong(image);
if (tile_offset == -1)
continue;
restore_offset=TellBlob(image);
if (restore_offset < 0)
continue;
offset=SeekBlob(image,(MagickOffsetType) tile_offset,SEEK_SET);
if (offset != (MagickOffsetType) tile_offset)
continue;
/*
Read a tile.
*/
blob=(unsigned char *) AcquireQuantumMemory((size_t) tile_length+2,
sizeof(*blob));
if (blob == (unsigned char *) NULL)
{
if (images != (Image *) NULL)
images=DestroyImageList(images);
ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed");
}
blob[0]=0xFF;
blob[1]=0xD8;
count=ReadBlob(image,tile_length,blob+2);
if (count != (ssize_t) tile_length)
{
if (images != (Image *) NULL)
images=DestroyImageList(images);
blob=(unsigned char *) RelinquishMagickMemory(blob);
ThrowReaderException(CorruptImageError,"UnexpectedEndOfFile");
}
read_info=CloneImageInfo(image_info);
(void) CopyMagickString(read_info->magick,"JPEG",MagickPathExtent);
tile_image=BlobToImage(read_info,blob,tile_length+2,exception);
read_info=DestroyImageInfo(read_info);
blob=(unsigned char *) RelinquishMagickMemory(blob);
offset=SeekBlob(image,restore_offset,SEEK_SET);
if (tile_image == (Image *) NULL)
continue;
(void) CopyMagickString(tile_image->magick,image->magick,MagickPathExtent);
(void) FormatImageProperty(tile_image,"jnx:northeast","%.20g,%.20g",
northeast.x,northeast.y);
(void) FormatImageProperty(tile_image,"jnx:southwest","%.20g,%.20g",
southwest.x,southwest.y);
AppendImageToList(&images,tile_image);
}
if (image->progress_monitor != (MagickProgressMonitor) NULL)
{
MagickBooleanType
proceed;
proceed=SetImageProgress(image,LoadImageTag,(MagickOffsetType) i,
(MagickSizeType) jnx_info.levels);
if (proceed == MagickFalse)
status=MagickFalse;
}
}
(void) CloseBlob(image);
image=DestroyImage(image);
if (images == (Image *) NULL)
return((Image *) NULL);
return(GetFirstImageInList(images));
}
开发者ID:edalquist,项目名称:ImageMagick,代码行数:101,代码来源:jnx.c
示例14: CompareImageCommand
//.........这里部分代码省略.........
difference_image=CompareImageChannels(image,reconstruct_image,channels,
metric,&distortion,exception);
else
if (similarity_image == (Image *) NULL)
ThrowCompareException(OptionError,"ImageWidthsOrHeightsDiffer",
image->filename)
else
{
Image
*composite_image;
/*
Determine if reconstructed image is a subimage of the image.
*/
composite_image=CloneImage(image,0,0,MagickTrue,exception);
if (composite_image == (Image *) NULL)
difference_image=CompareImageChannels(image,reconstruct_image,
channels,metric,&distortion,exception);
else
{
(void) CompositeImage(composite_image,CopyCompositeOp,
reconstruct_image,offset.x,offset.y);
difference_image=CompareImageChannels(image,composite_image,
channels,metric,&distortion,exception);
if (difference_image != (Image *) NULL)
{
difference_image->page.x=offset.x;
difference_image->page.y=offset.y;
}
composite_image=DestroyImage(composite_image);
}
if (difference_image != (Image *) NULL)
{
AppendImageToList(&difference_image,similarity_image);
similarity_image=(Image *) NULL;
}
}
if (difference_image == (Image *) NULL)
status=0;
else
{
if (image_info->verbose != MagickFalse)
(void) IsImagesEqual(image,reconstruct_image);
if (*difference_image->magick == '\0')
(void) CopyMagickString(difference_image->magick,image->magick,
MaxTextExtent);
if (image_info->verbose == MagickFalse)
{
switch (metric)
{
case FuzzErrorMetric:
case MeanAbsoluteErrorMetric:
case MeanSquaredErrorMetric:
case RootMeanSquaredErrorMetric:
case PeakAbsoluteErrorMetric:
{
(void) FormatLocaleFile(stderr,"%g (%g)",QuantumRange*distortion,
(double) distortion);
if ((reconstruct_image->columns != image->columns) ||
(reconstruct_image->rows != image->rows))
(void) FormatLocaleFile(stderr," @ %.20g,%.20g",(double)
difference_image->page.x,(double) difference_image->page.y);
(void) FormatLocaleFile(stderr,"\n");
break;
}
case AbsoluteErrorMetric:
开发者ID:TimurTarasenko,项目名称:dava.framework,代码行数:67,代码来源:compare.c
示例15: ReadSCREENSHOTImage
//.........这里部分代码省略.........
RGBTRIPLE
*p;
ssize_t
y;
assert(image_info != (const ImageInfo *) NULL);
i=0;
device.cb = sizeof(device);
image=(Image *) NULL;
while(EnumDisplayDevices(NULL,i,&device,0) && ++i)
{
if ((device.StateFlags & DISPLAY_DEVICE_ACTIVE) != DISPLAY_DEVICE_ACTIVE)
continue;
hDC=CreateDC(device.DeviceName,device.DeviceName,NULL,NULL);
if (hDC == (HDC) NULL)
ThrowReaderException(CoderError,"UnableToCreateDC");
screen=AcquireImage(image_info);
screen->columns=(size_t) GetDeviceCaps(hDC,HORZRES);
screen->rows=(size_t) GetDeviceCaps(hDC,VERTRES);
screen->storage_class=DirectClass;
status=SetImageExtent(screen,screen->columns,screen->rows);
if (status == MagickFalse)
{
InheritException(exception,&image->exception);
return(DestroyImageList(image));
}
if (image == (Image *) NULL)
image=screen;
else
AppendImageToList(&image,screen);
bitmapDC=CreateCompatibleDC(hDC);
if (bitmapDC == (HDC) NULL)
{
DeleteDC(hDC);
ThrowReaderException(CoderError,"UnableToCreateDC");
}
(void) ResetMagickMemory(&bmi,0,sizeof(BITMAPINFO));
bmi.bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
bmi.bmiHeader.biWidth=(LONG) screen->columns;
bmi.bmiHeader.biHeight=(-1)*(LONG) screen->rows;
bmi.bmiHeader.biPlanes=1;
bmi.bmiHeader.biBitCount=24;
bmi.bmiHeader.biCompression=BI_RGB;
bitmap=CreateDIBSection(hDC,&bmi,DIB_RGB_COLORS,(void **) &p,NULL,0);
if (bitmap == (HBITMAP) NULL)
{
DeleteDC(hDC);
DeleteDC(bitmapDC);
ThrowReaderException(CoderError,"UnableToCreateBitmap");
}
bitmapOld=(HBITMAP) SelectObject(bitmapDC,bitmap);
if (bitmapOld == (HBITMAP) NULL)
{
DeleteDC(hDC);
DeleteDC(bitmapDC);
DeleteObject(bitmap);
ThrowReaderException(CoderError,"UnableToCreateBitmap");
}
BitBlt(bitmapDC,0,0,(int) screen->columns,(int) screen->rows,hDC,0,0,
SRCCOPY);
(void) SelectObject(bitmapDC,bitmapOld);
开发者ID:INT2208-ST,项目名称:MyFriend,代码行数:67,代码来源:screenshot.c
示例16: CloneImages
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% C l o n e I m a g e s %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% CloneImages() clones one or more images from an image sequence, using a
% comma separated list of image numbers or ranges.
%
% The numbers start at 0 for the first image in the list, while negative
% numbers refer to images starting counting from the end of the range. Images
% may be refered to multiple times to clone them multiple times. Images
% refered beyond the available number of images in list are ignored.
%
% Images referenced may be reversed, and results in a clone of those images
% also being made with a reversed order.
%
% The format of the CloneImages method is:
%
% Image *CloneImages(const Image *images,const char *scenes,
% ExceptionInfo *exception)
%
% A description of each parameter follows:
%
% o images: the image sequence.
%
% o scenes: This character string specifies which scenes to clone
% (e.g. 1,3-5,7-3,2).
%
% o exception: return any errors or warnings in this structure.
%
*/
MagickExport Image *CloneImages(const Image *images,const char *scenes,
ExceptionInfo *exception)
{
char
*p;
const Image
*next;
Image
*clone_images,
*image;
long
first,
last,
step;
register long
i;
size_t
length;
assert(images != (const Image *) NULL);
assert(images->signature == MagickSignature);
assert(scenes != (char *) NULL);
if (images->debug != MagickFalse)
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",images->filename);
assert(exception != (ExceptionInfo *) NULL);
assert(exception->signature == MagickSignature);
clone_images=NewImageList();
images=GetFirstImageInList(images);
length=GetImageListLength(images);
for (p=(char *) scenes; *p != '\0';)
{
while ((isspace((int) ((unsigned char) *p)) != 0) || (*p == ','))
p++;
first=strtol(p,&p,10);
if (first < 0)
first+=(long) length;
last=first;
while (isspace((int) ((unsigned char) *p)) != 0)
p++;
if (*p == '-')
{
last=strtol(p+1,&p,10);
if (last < 0)
last+=(long) length;
}
for (step=first > last ? -1 : 1; first != (last+step); first+=step)
{
i=0;
for (next=images; next != (Image *) NULL; next=GetNextImageInList(next))
{
if (i == first)
{
image=CloneImage(next,0,0,MagickTrue,exception);
if (image == (Image *) NULL)
break;
AppendImageToList(&clone_images,image);
}
i++;
//.........这里部分代码省略.........
开发者ID:0xPr0xy,项目名称:ImageMagick,代码行数:101,代码来源:list.c
示例17: ImportImageCommand
//.........这里部分代码省略.........
resource_value=XGetResourceInstance(resource_database,GetClientName(),
"verbose","False");
image_info->verbose=IsTrue(resource_value);
resource_value=XGetResourceInstance(resource_database,GetClientName(),
"dither","True");
quantize_info->dither=IsTrue(resource_value);
snapshots=1;
status=MagickTrue;
filename=(char *) NULL;
target_window=(char *) NULL;
/*
Check command syntax.
*/
for (i=1; i < (long) argc; i++)
{
option=argv[i];
if (LocaleCompare(option,"(") == 0)
{
if (k == MaxImageStackDepth)
ThrowImportException(OptionError,"ParenthesisNestedTooDeeply",
option);
MogrifyImageStack(image_stack[k],MagickTrue,pend);
k++;
image_stack[k]=NewImageList();
continue;
}
if (LocaleCompare(option,")") == 0)
{
if (k == 0)
ThrowImportException(OptionError,"UnableToParseExpression",option);
if (image_stack[k] != (Image *) NULL)
{
MogrifyImageStack(image_stack[k],MagickTrue,MagickTrue);
AppendImageToList(&image_stack[k-1],image_stack[k]);
}
k--;
continue;
}
if (IsMagickOption(option) == MagickFalse)
{
Image
*image;
unsigned long
scene;
/*
Read image from X server.
*/
MogrifyImageStack(image_stack[k],MagickFalse,pend);
filename=argv[i];
if (target_window != (char *) NULL)
(void) CopyMagickString(image_info->filename,target_window,
MaxTextExtent);
for (scene=0; scene < (unsigned long) Max(snapshots,1); scene++)
{
(void) sleep(resource_info.pause);
image=XImportImage(image_info,&ximage_info);
status&=(image != (Image *) NULL) &&
(exception->severity < ErrorException);
if (image == (Image *) NULL)
continue;
(void) CopyMagickString(image->filename,filename,MaxTextExtent);
(void) strcpy(image->magick,"PS");
image->scene=scene;
AppendImageToList(&image_stack[k],image);
开发者ID:miettal,项目名称:armadillo420_standard,代码行数:67,代码来源:import.c
示例18: IdentifyImageCommand
//.........这里部分代码省略.........
*/
ReadCommandlLine(argc,&argv);
status=ExpandFilenames(&argc,&argv);
if (status == MagickFalse)
{
char
*message;
message=GetExceptionMessage(errno);
ThrowIdentifyException(ResourceLimitError,"MemoryAllocationFailed",
message);
message=DestroyString(message);
}
for (i=1; i < (long) argc; i++)
{
option=argv[i];
if (LocaleCompare(option,"(") == 0)
{
if (k == MaxImageStackDepth)
ThrowIdentifyException(OptionError,"ParenthesisNestedTooDeeply",
option);
MogrifyImageStack(image_stack[k],MagickTrue,pend);
k++;
image_stack[k]=NewImageList();
continue;
}
if (LocaleCompare(option,")") == 0)
{
if (k == 0)
ThrowIdentifyException(OptionError,"UnableToParseExpression",option);
if (image_stack[k] != (Image *) NULL)
{
MogrifyImageStack(image_stack[k],MagickTrue,MagickTrue);
AppendImageToList(&image_stack[k-1],image_stack[k]);
}
k--;
continue;
}
if (IsMagickOption(option) == MagickFalse)
{
char
*filename;
Image
*image;
ImageInfo
*identify_info;
/*
Read input image.
*/
MogrifyImageStack(image_stack[k],MagickFalse,pend);
identify_info=CloneImageInfo(image_info);
identify_info->verbose=MagickFalse;
filename=argv[i];
if ((LocaleCompare(filename,"--") == 0) && (i < (argc-1)))
filename=argv[++i];
(void) CopyMagickString(identify_info->filename,filename,MaxTextExtent);
if (identify_info->ping == MagickFalse)
image=ReadImage(identify_info,exception);
else
image=PingImage(identify_info,exception);
identify_info=DestroyImageInfo(identify_info);
status&=(image != (Image *) NULL) &&
(exception->severity < ErrorException);
开发者ID:vazexqi,项目名称:ParsecPipelineParallelism,代码行数:67,代码来源:identify.c
示例19: tc_filter
//.........这里部分代码省略.........
exception_info.reason,
exception_info.description);
strlcpy(mfd->file, "/dev/null", PATH_MAX);
return 0;
}
DestroyImageInfo(image_info);
if (mfd->image->columns > vob->ex_v_width
|| mfd->image->rows > vob->ex_v_height
) {
tc_log_error(MOD_NAME, "\"%s\" is too large", mfd->file);
return -1;
}
if (vob->im_v_codec == TC_CODEC_YUV420P) {
if ((mfd->image->columns & 1) || (mfd->image->rows & 1)) {
tc_log_error(MOD_NAME, "\"%s\" has odd sizes", mfd->file);
return -1;
}
}
mfd->images = (Image *)GetFirstImageInList(mfd->image);
nimg = NewImageList();
while (mfd->images != (Image *)NULL) {
if (mfd->flip || flip) {
timg = FlipImage(mfd->images, &exception_info);
if (timg == (Image *) NULL) {
MagickError(exception_info.severity,
exception_info.reason,
exception_info.description);
return -1;
}
AppendImageToList(&nimg, timg);
}
mfd->images = GetNextImageInList(mfd->images);
mfd->nr_of_images++;
}
// check for memleaks;
//DestroyImageList(image);
if (mfd->flip || flip) {
mfd->image = nimg;
}
/* initial delay. real delay = 1/100 sec * delay */
mfd->cur_delay = mfd->image->delay*vob->fps/100;
if (ve
|
请发表评论