あなたの現在の画像のための圧縮品質を設定setImageCompressionQuality
方法をPNG/JPEGファイルを圧縮しようとしています。このメソッドはMagickWand
のMagickSetImageCompressionQuality
関数のラッパーです。 Source codeは:
WandExport MagickBooleanType MagickSetImageCompressionQuality(MagickWand *wand,
const size_t quality)
{
assert(wand != (MagickWand *) NULL);
assert(wand->signature == MagickWandSignature);
if (wand->debug != MagickFalse)
(void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
if (wand->images == (Image *) NULL)
ThrowWandException(WandError,"ContainsNoImages",wand->name);
//This line sets the quality for the instance 'images'
wand->images->quality=quality;
return(MagickTrue);
}
オブジェクト全体の圧縮品質を設定setCompressionQuality
方法。このメソッドはMagickWand
のMagickSetCompressionQuality
関数のラッパーです。 Source codeは:
struct _MagickWand
{
...
Image
*images; /* The images in this wand - also the current image */
ImageInfo
*image_info; /* Global settings used for images in Wand */
...
};
両方Image
and ImageInfo
構造体はsize_t quality;
データメンバを保持する:
WandExport MagickBooleanType MagickSetCompressionQuality(MagickWand *wand,
const size_t quality)
{
assert(wand != (MagickWand *) NULL);
assert(wand->signature == MagickWandSignature);
if (wand->debug != MagickFalse)
(void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
//This line sets quality for the image_info struct instance.
wand->image_info->quality=quality;
return(MagickTrue);
}
MagickWand
構造体はImage
とImageInfo
構造体、sourceのインスタンスを保持しています。したがって、あなたの例ではsetImageCompressionQuality
は完璧です。
Imagickのphpページによると、http://php.net/manual/en/book.imagick.phpはオブジェクト用でもう1つは画像用です。 「setCompressionQualityメソッドは、新しい画像(?)に対してのみ機能する」と読んでいます。上記のページの通りです。だからあなたの状況では1人だけが働きます。 – Bonzo