本文整理匯總了C++中AcquireExceptionInfo函數的典型用法代碼示例。如果您正苦於以下問題:C++ AcquireExceptionInfo函數的具體用法?C++ AcquireExceptionInfo怎麽用?C++ AcquireExceptionInfo使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了AcquireExceptionInfo函數的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C++代碼示例。
示例1: ReadImages
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% R e a d I m a g e s %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% ReadImages() reads one or more images and returns them as an image list.
%
% The format of the ReadImage method is:
%
% Image *ReadImages(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 *ReadImages(const ImageInfo *image_info,
ExceptionInfo *exception)
{
char
filename[MaxTextExtent];
Image
*image,
*images;
ImageInfo
*read_info;
/*
Read 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);
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);
image=ReadImage(read_info,exception);
if (image == (Image *) NULL)
continue;
AppendImageToList(&images,image);
}
read_info=DestroyImageInfo(read_info);
return(images);
}
return(ReadImage(image_info,exception));
}
示例2: NewPixelIterator
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% N e w P i x e l I t e r a t o r %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% NewPixelIterator() returns a new pixel iterator.
%
% The format of the NewPixelIterator method is:
%
% PixelIterator *NewPixelIterator(MagickWand *wand)
%
% A description of each parameter follows:
%
% o wand: the magick wand.
%
*/
WandExport PixelIterator *NewPixelIterator(MagickWand *wand)
{
const char
*quantum;
ExceptionInfo
*exception;
Image
*image;
PixelIterator
*iterator;
size_t
depth;
CacheView
*view;
depth=MAGICKCORE_QUANTUM_DEPTH;
quantum=GetMagickQuantumDepth(&depth);
if (depth != MAGICKCORE_QUANTUM_DEPTH)
ThrowWandFatalException(WandError,"QuantumDepthMismatch",quantum);
assert(wand != (MagickWand *) NULL);
image=GetImageFromMagickWand(wand);
if (image == (Image *) NULL)
return((PixelIterator *) NULL);
exception=AcquireExceptionInfo();
view=AcquireVirtualCacheView(image,exception);
if (view == (CacheView *) NULL)
return((PixelIterator *) NULL);
iterator=(PixelIterator *) AcquireMagickMemory(sizeof(*iterator));
if (iterator == (PixelIterator *) NULL)
ThrowWandFatalException(ResourceLimitFatalError,"MemoryAllocationFailed",
GetExceptionMessage(errno));
(void) ResetMagickMemory(iterator,0,sizeof(*iterator));
iterator->id=AcquireWandId();
(void) FormatLocaleString(iterator->name,MaxTextExtent,"%s-%.20g",
PixelIteratorId,(double) iterator->id);
iterator->exception=exception;
iterator->view=view;
SetGeometry(image,&iterator->region);
iterator->region.width=image->columns;
iterator->region.height=image->rows;
iterator->region.x=0;
iterator->region.y=0;
iterator->pixel_wands=NewPixelWands(iterator->region.width);
iterator->y=0;
iterator->debug=IsEventLogging();
if (iterator->debug != MagickFalse)
(void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",iterator->name);
iterator->signature=WandSignature;
return(iterator);
}
示例3: NewPixelRegionIterator
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% N e w P i x e l R e g i o n I t e r a t o r %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% NewPixelRegionIterator() returns a new pixel iterator.
%
% The format of the NewPixelRegionIterator method is:
%
% PixelIterator NewPixelRegionIterator(MagickWand *wand,const long x,
% const long y,const unsigned long width,const unsigned long height)
%
% A description of each parameter follows:
%
% o wand: the magick wand.
%
% o x,y,columns,rows: These values define the perimeter of a region of
% pixels.
%
*/
WandExport PixelIterator *NewPixelRegionIterator(MagickWand *wand,const long x,
const long y,const unsigned long width,const unsigned long height)
{
const char
*quantum;
Image
*image;
PixelIterator
*iterator;
unsigned long
depth;
CacheView
*view;
assert(wand != (MagickWand *) NULL);
depth=MAGICKCORE_QUANTUM_DEPTH;
quantum=GetMagickQuantumDepth(&depth);
if (depth != MAGICKCORE_QUANTUM_DEPTH)
ThrowWandFatalException(WandError,"QuantumDepthMismatch",quantum);
if ((width == 0) || (width == 0))
ThrowWandFatalException(WandError,"ZeroRegionSize",quantum);
image=GetImageFromMagickWand(wand);
if (image == (Image *) NULL)
return((PixelIterator *) NULL);
view=AcquireCacheView(image);
if (view == (CacheView *) NULL)
return((PixelIterator *) NULL);
iterator=(PixelIterator *) AcquireMagickMemory(sizeof(*iterator));
if (iterator == (PixelIterator *) NULL)
ThrowWandFatalException(ResourceLimitFatalError,"MemoryAllocationFailed",
wand->name);
(void) ResetMagickMemory(iterator,0,sizeof(*iterator));
iterator->id=AcquireWandId();
(void) FormatMagickString(iterator->name,MaxTextExtent,"%s-%lu",
PixelIteratorId,iterator->id);
iterator->exception=AcquireExceptionInfo();
iterator->view=view;
SetGeometry(image,&iterator->region);
iterator->region.width=width;
iterator->region.height=height;
iterator->region.x=x;
iterator->region.y=y;
iterator->pixel_wands=NewPixelWands(iterator->region.width);
iterator->y=0;
iterator->debug=IsEventLogging();
if (iterator->debug != MagickFalse)
(void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",iterator->name);
iterator->signature=WandSignature;
return(iterator);
}
示例4: main
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% M a i n %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%
*/
int main(int argc,char **argv)
{
char
*option,
*text;
ExceptionInfo
*exception;
ImageInfo
*image_info;
MagickBooleanType
regard_warnings,
status;
register long
i;
MagickCoreGenesis(*argv,MagickTrue);
exception=AcquireExceptionInfo();
regard_warnings=MagickFalse;
for (i=1; i < (long) argc; i++)
{
option=argv[i];
if ((strlen(option) == 1) || ((*option != '-') && (*option != '+')))
continue;
if (LocaleCompare("debug",option+1) == 0)
(void) SetLogEventMask(argv[++i]);
if (LocaleCompare("regard-warnings",option+1) == 0)
regard_warnings=MagickTrue;
}
image_info=AcquireImageInfo();
text=(char *) NULL;
status=CompareImageCommand(image_info,argc,argv,&text,exception);
if ((status == MagickFalse) || (exception->severity != UndefinedException))
{
if ((exception->severity < ErrorException) &&
(regard_warnings == MagickFalse))
status=MagickTrue;
CatchException(exception);
}
if (text != (char *) NULL)
{
(void) fputs(text,stdout);
(void) fputc('\n',stdout);
text=DestroyString(text);
}
image_info=DestroyImageInfo(image_info);
exception=DestroyExceptionInfo(exception);
MagickCoreTerminus();
return(status == MagickFalse ? 1 : 0);
}
示例5: GenerateSecretKey
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% G e n e r a t e S e c r e t K e y %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% GenerateSecretKey() returns WizardTrue if a key is generated and successfully
% added to the secret key ring.
%
% The format of the GenerateSecretKey method is:
%
% WizardBooleanType GenerateSecretKey(SecretInfo *secret_info,
% ExceptionInfo *exception)
%
% A description of each parameter follows:
%
% o secret_info: The secret info.
%
% o exception: Return any errors or warnings in this structure.
%
*/
WizardExport WizardBooleanType GenerateSecretKey(SecretInfo *secret_info,
ExceptionInfo *exception)
{
ExceptionInfo
*sans;
WizardBooleanType
status;
StringInfo
*key,
*phrase;
(void) LogWizardEvent(TraceEvent,GetWizardModule(),"...");
WizardAssert(AuthenticateDomain,secret_info != (SecretInfo *) NULL);
WizardAssert(AuthenticateDomain,secret_info->signature == WizardSignature);
WizardAssert(AuthenticateDomain,exception != (ExceptionInfo *) NULL);
if (secret_info->passphrase == (char *) NULL)
phrase=GetPassphrase(exception);
else
phrase=FileToStringInfo(secret_info->passphrase,~0,exception);
if (phrase == (StringInfo *) NULL)
return(WizardFalse);
sans=AcquireExceptionInfo();
do
{
if (secret_info->key != (StringInfo *) NULL)
secret_info->key=DestroyStringInfo(secret_info->key);
secret_info->key=GetRandomKey(secret_info->random_info,
secret_info->key_length/8);
ConstructHMAC(secret_info->hmac_info,phrase,secret_info->key);
if (secret_info->id != (StringInfo *) NULL)
secret_info->id=DestroyStringInfo(secret_info->id);
secret_info->id=CloneStringInfo(GetHMACDigest(secret_info->hmac_info));
SetKeyringId(secret_info->keyring_info,secret_info->id);
status=ExportKeyringKey(secret_info->keyring_info,sans);
} while (status != WizardFalse);
sans=DestroyExceptionInfo(sans);
SetKeyringKey(secret_info->keyring_info,secret_info->key);
SetKeyringNonce(secret_info->keyring_info,secret_info->nonce);
SetCipherKey(secret_info->cipher_info,phrase);
SetCipherNonce(secret_info->cipher_info,GetKeyringNonce(
secret_info->keyring_info));
key=CloneStringInfo(GetKeyringKey(secret_info->keyring_info));
(void) EncipherCipher(secret_info->cipher_info,key);
SetKeyringKey(secret_info->keyring_info,key);
status=ImportKeyringKey(secret_info->keyring_info,exception);
phrase=DestroyStringInfo(phrase);
key=DestroyStringInfo(key);
return(WizardTrue);
}
示例6: IsRightsAuthorized
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% I s R i g h t s A u t h o r i z e d %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% IsRightsAuthorized() returns MagickTrue if the policy authorizes the
% requested rights for the specified domain.
%
% The format of the IsRightsAuthorized method is:
%
% MagickBooleanType IsRightsAuthorized(const PolicyDomain domain,
% const PolicyRights rights,const char *pattern)
%
% A description of each parameter follows:
%
% o domain: the policy domain.
%
% o rights: the policy rights.
%
% o pattern: the coder, delegate, filter, or path pattern.
%
*/
MagickExport MagickBooleanType IsRightsAuthorized(const PolicyDomain domain,
const PolicyRights rights,const char *pattern)
{
const PolicyInfo
*policy_info;
ExceptionInfo
*exception;
MagickBooleanType
authorized;
register PolicyInfo
*p;
(void) LogMagickEvent(PolicyEvent,GetMagickModule(),
"Domain: %s; rights=%s; pattern=\"%s\" ...",
CommandOptionToMnemonic(MagickPolicyDomainOptions,domain),
CommandOptionToMnemonic(MagickPolicyRightsOptions,rights),pattern);
exception=AcquireExceptionInfo();
policy_info=GetPolicyInfo("*",exception);
exception=DestroyExceptionInfo(exception);
if (policy_info == (PolicyInfo *) NULL)
return(MagickTrue);
authorized=MagickTrue;
LockSemaphoreInfo(policy_semaphore);
ResetLinkedListIterator(policy_list);
p=(PolicyInfo *) GetNextValueInLinkedList(policy_list);
while ((p != (PolicyInfo *) NULL) && (authorized != MagickFalse))
{
if ((p->domain == domain) &&
(GlobExpression(pattern,p->pattern,MagickFalse) != MagickFalse))
{
if (((rights & ReadPolicyRights) != 0) &&
((p->rights & ReadPolicyRights) == 0))
authorized=MagickFalse;
if (((rights & WritePolicyRights) != 0) &&
((p->rights & WritePolicyRights) == 0))
authorized=MagickFalse;
if (((rights & ExecutePolicyRights) != 0) &&
((p->rights & ExecutePolicyRights) == 0))
authorized=MagickFalse;
}
p=(PolicyInfo *) GetNextValueInLinkedList(policy_list);
}
UnlockSemaphoreInfo(policy_semaphore);
return(authorized);
}
示例7: Color_Name_to_PixelPacket
/**
* Convert a color name to a PixelPacket
*
* No Ruby usage (internal function)
*
* @param color the PixelPacket to modify
* @param name_arg the coor name
* @throw ArgumentError
*/
static void
Color_Name_to_PixelPacket(PixelPacket *color, VALUE name_arg)
{
MagickBooleanType okay;
char *name;
ExceptionInfo *exception;
exception = AcquireExceptionInfo();
name = StringValuePtr(name_arg);
okay = QueryColorDatabase(name, color, exception);
(void) DestroyExceptionInfo(exception);
if (!okay)
{
rb_raise(rb_eArgError, "invalid color name %s", name);
}
}
示例8: ImageList_composite_layers
/**
* Equivalent to convert's -layers composite option.
*
* Ruby usage:
* - @verbatim ImageList#composite_layers(images) @endverbatim
* - @verbatim ImageList#composite_layers(images,operator) @endverbatim
*
* Notes:
* - Default operator is OverCompositeOp
*
* @param argc number of input arguments
* @param argv array of input arguments
* @param self this object
* @return a new imagelist
* @see mogrify.c in ImageMagick
*/
VALUE
ImageList_composite_layers(int argc, VALUE *argv, VALUE self)
{
VALUE source_images;
Image *dest, *source, *new_images;
RectangleInfo geometry;
CompositeOperator operator = OverCompositeOp;
ExceptionInfo *exception;
switch (argc)
{
case 2:
VALUE_TO_ENUM(argv[1], operator, CompositeOperator);
case 1:
source_images = argv[0];
break;
default:
rb_raise(rb_eArgError, "wrong number of arguments (expected 1 or 2, got %d)", argc);
break;
}
// Convert ImageLists to image sequences.
dest = images_from_imagelist(self);
new_images = clone_imagelist(dest);
rm_split(dest);
source = images_from_imagelist(source_images);
SetGeometry(new_images,&geometry);
(void) ParseAbsoluteGeometry(new_images->geometry, &geometry);
geometry.width = source->page.width != 0 ? source->page.width : source->columns;
geometry.height = source->page.height != 0 ? source->page.height : source->rows;
GravityAdjustGeometry(new_images->page.width != 0 ? new_images->page.width : new_images->columns
, new_images->page.height != 0 ? new_images->page.height : new_images->rows
, new_images->gravity, &geometry);
exception = AcquireExceptionInfo();
CompositeLayers(new_images, operator, source, geometry.x, geometry.y, exception);
rm_split(source);
rm_check_exception(exception, new_images, DestroyOnError);
(void) DestroyExceptionInfo(exception);
RB_GC_GUARD(source_images);
return rm_imagelist_from_images(new_images);
}
示例9: ImageList_deconstruct
/**
* Compare each image with the next in a sequence and returns the maximum
* bounding region of any pixel differences it discovers.
*
* Ruby usage:
* - @verbatim ImageList#deconstruct @endverbatim
*
* @param self this object
* @return a new imagelist
*/
VALUE
ImageList_deconstruct(VALUE self)
{
Image *new_images, *images;
ExceptionInfo *exception;
images = images_from_imagelist(self);
exception = AcquireExceptionInfo();
new_images = DeconstructImages(images, exception);
rm_split(images);
rm_check_exception(exception, new_images, DestroyOnError);
(void) DestroyExceptionInfo(exception);
rm_ensure_result(new_images);
return rm_imagelist_from_images(new_images);
}
示例10: ImageList_montage
/**
* Call MontageImages.
*
* Ruby usage:
* - @verbatim ImageList#montage <{parm block}> @endverbatim
*
* Notes:
* - Creates Montage object, yields to block if present in Montage object's
* scope.
*
* @param self this object
* @return a new image list
*/
VALUE
ImageList_montage(VALUE self)
{
VALUE montage_obj;
Montage *montage;
Image *new_images, *images;
ExceptionInfo *exception;
// Create a new instance of the Magick::Montage class
montage_obj = rm_montage_new();
if (rb_block_given_p())
{
// Run the block in the instance's context, allowing the app to modify the
// object's attributes.
(void) rb_obj_instance_eval(0, NULL, montage_obj);
}
Data_Get_Struct(montage_obj, Montage, montage);
images = images_from_imagelist(self);
// If app specified a non-default composition operator, use it for all images.
if (montage->compose != UndefinedCompositeOp)
{
Image *i;
for (i = images; i; i = GetNextImageInList(i))
{
i->compose = montage->compose;
}
}
exception = AcquireExceptionInfo();
// MontageImage can return more than one image.
new_images = MontageImages(images, montage->info, exception);
rm_split(images);
rm_check_exception(exception, new_images, DestroyOnError);
(void) DestroyExceptionInfo(exception);
rm_ensure_result(new_images);
RB_GC_GUARD(montage_obj);
return rm_imagelist_from_images(new_images);
}
示例11: ImageList_coalesce
/**
* Call CoalesceImages.
*
* Ruby usage:
* - @verbatim ImageList#coalesce @endverbatim
*
* Notes:
* - Respects the delay, matte, and start_loop fields in each image.
*
* @param self this object
* @return a new Image with the coalesced image sequence return stored in the
* images array
*/
VALUE
ImageList_coalesce(VALUE self)
{
Image *images, *new_images;
ExceptionInfo *exception;
// Convert the image array to an image sequence.
images = images_from_imagelist(self);
exception = AcquireExceptionInfo();
new_images = CoalesceImages(images, exception);
rm_split(images);
rm_check_exception(exception, new_images, DestroyOnError);
(void) DestroyExceptionInfo(exception);
rm_ensure_result(new_images);
return rm_imagelist_from_images(new_images);
}
示例12: CloneImageInfo
/**
* Undo the image_to_str, above.
*
* No Ruby usage (internal function)
*
* Notes:
* - Returns NULL if the argument is Qnil
*
* @param str the Ruby string to convert
* @return Image represented by str
* @see image_to_str
*/
static
Image *str_to_image(VALUE str)
{
Image *image = NULL;
Info *info;
ExceptionInfo *exception;
if (str != Qnil)
{
info = CloneImageInfo(NULL);
exception = AcquireExceptionInfo();
image = BlobToImage(info, RSTRING_PTR(str), RSTRING_LEN(str), exception);
DestroyImageInfo(info);
CHECK_EXCEPTION();
DestroyExceptionInfo(exception);
}
return image;
}
示例13: ImageWrite
int ImageWrite( struct ImageLibrary *im, Image *img, File *rootDev, const char *path )
{
FHandler *fh = rootDev->f_FSys;
File *rfp = (File *)fh->FileOpen( rootDev, path, "wb" );
if( rfp != NULL )
{
char *buffer = NULL;
size_t length = 0;
ExceptionInfo *ei=AcquireExceptionInfo();
ImageInfo *ii=CloneImageInfo((ImageInfo *) NULL);
buffer = ImageToBlob( ii, img, &length, ei );
if( buffer == NULL )
{
ERROR("Cannot image to data\n");
DestroyExceptionInfo( ei );
DestroyImageInfo( ii );
fh->FileClose( rootDev, rfp );
return 2;
}
else
{
fh->FileWrite( rfp, buffer, length );
}
DestroyExceptionInfo( ei );
DestroyImageInfo( ii );
fh->FileClose( rootDev, rfp );
}
else
{
ERROR("Cannot open file: %s to write\n", path );
return 1;
}
return 0;
}
示例14: CloneImageView
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% C l o n e I m a g e V i e w %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% CloneImageView() makes a copy of the specified image view.
%
% The format of the CloneImageView method is:
%
% ImageView *CloneImageView(const ImageView *image_view)
%
% A description of each parameter follows:
%
% o image_view: the image view.
%
*/
MagickExport ImageView *CloneImageView(const ImageView *image_view)
{
ImageView
*clone_view;
assert(image_view != (ImageView *) NULL);
assert(image_view->signature == MagickSignature);
clone_view=(ImageView *) AcquireMagickMemory(sizeof(*clone_view));
if (clone_view == (ImageView *) NULL)
ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed");
(void) ResetMagickMemory(clone_view,0,sizeof(*clone_view));
clone_view->description=ConstantString(image_view->description);
clone_view->extent=image_view->extent;
clone_view->view=CloneCacheView(image_view->view);
clone_view->exception=AcquireExceptionInfo();
InheritException(clone_view->exception,image_view->exception);
clone_view->debug=image_view->debug;
clone_view->signature=MagickSignature;
return(clone_view);
}
示例15: LLVMFuzzerTestOneInput
/*
We use BlobToImage to load input as an image, if successful destroy image.
*/
extern "C" int LLVMFuzzerTestOneInput(const unsigned char *data, size_t size) {
Image *image;
ImageInfo image_info;
ExceptionInfo *exception;
GetImageInfo(&image_info);
exception = AcquireExceptionInfo();
image = BlobToImage(&image_info, data, size, exception);
if (exception->severity != UndefinedException){
//CatchException(exception);
}
if(image != (Image *) NULL){
DestroyImage(image);
}
DestroyExceptionInfo(exception);
return 0;
}