-}
-
-static ExceptionInfo exception;
-static QuantizeInfo quantize_info;
-static ImageInfo *image_info;
-
-void
-compute_image_signature_prepare(void)
-{
- InitializeMagick(NULL);
- GetExceptionInfo(&exception);
- image_info = CloneImageInfo(NULL);
- image_info->subrange = 1;
- GetQuantizeInfo(&quantize_info);
- quantize_info.colorspace = RGBColorspace;
-}
-
-void
-compute_image_signature_finish(void)
-{
- DestroyImageInfo(image_info);
- DestroyExceptionInfo(&exception);
- DestroyMagick();
-}
-
-int
-compute_image_signature(struct image *image, struct image_signature *sig)
-{
- if ((image->flags & IMAGE_GRAYSCALE) || (image->width < 4) || (image->height < 4))
- return -1;
- compute_image_area_signature(image, sig);
- return 0;
-#if 0
- Image *image = BlobToImage(image_info, data, len, &exception); /* Damn slow... takes most of CPU time :-/ */
- if (!image)
- die("Invalid image format");
- if (image->columns < 4 || image->rows < 4)
- {
- DBG("Image too small (%dx%d)", (int)image->columns, (int)image->rows);
- DestroyImage(image);
- return -1;
- }
- QuantizeImage(&quantize_info, image); /* Also slow... and propably not necessary... */
- PixelPacket *pixels = (PixelPacket *) AcquireImagePixels(image, 0, 0, image->columns, image->rows, &exception);
- compute_image_area_signature(pixels, image->columns, image->rows, sig);
- DestroyImage(image);
- return 0;
-#endif