Use setImageOpacity(1.0) before resizing, for proper handling of transparency in png and gif.
Imagick::resizeImage
(PECL imagick 2.0.0)
Imagick::resizeImage — 画像のサイズを変更する
説明
bool Imagick::resizeImage
( int $columns
, int $rows
, int $filter
, float $blur
[, bool $bestfit = false
] )
警告
この関数は、 現在のところ詳細な情報はありません。引数のリストのみが 記述されています。
指定した大きさと フィルタ で、画像のサイズを変更します。
注意: パラメータ bestfit の挙動は Imagick 3.0.0 で変わりました。 これより前のバージョンでは、200x150 の画像に対して 400x400 を指定した場合は何もせずそのままになっていました。 Imagick 3.0.0 以降では、この画像は 400x300 に拡大されます。これが、 指定したサイズに対して「ベストフィット」する大きさだからです。 bestfit を使う場合は、幅と高さの両方を指定しなければなりません。
パラメータ
- columns
-
画像の幅。
- rows
-
画像の高さ。
- filter
-
フィルタ定数 の一覧を参照ください。
- blur
-
blur 要素。> 1 はぼやけた状態、< 1 はシャープな状態を表します。
- bestfit
-
オプションの fit パラメータ。デフォルトは false。
返り値
成功した場合に TRUE を返します。
変更履歴
| バージョン | 説明 |
|---|---|
| 2.1.0 | オプションのパラメータ fit が追加され、 このメソッドは、比例形式の拡大・縮小をサポートするようになりました。 どちらかのパラメータにゼロを渡すと比例形式の拡大・縮小を行います。 |
Imagick::resizeImage
michael dot heca at gmail dot com
16-Nov-2009 01:18
16-Nov-2009 01:18
dennis at gofolo dot com
08-Nov-2009 02:32
08-Nov-2009 02:32
Having to do alot of resizing, i needed to know the speeds of the different resize filters.
This was how long it took to resize a 5906x5906 JPEG image to 1181x1181.
FILTER_POINT took: 0.334532976151 seconds
FILTER_BOX took: 0.777871131897 seconds
FILTER_TRIANGLE took: 1.3695909977 seconds
FILTER_HERMITE took: 1.35866093636 seconds
FILTER_HANNING took: 4.88722896576 seconds
FILTER_HAMMING took: 4.88665103912 seconds
FILTER_BLACKMAN took: 4.89026689529 seconds
FILTER_GAUSSIAN took: 1.93553304672 seconds
FILTER_QUADRATIC took: 1.93322920799 seconds
FILTER_CUBIC took: 2.58396601677 seconds
FILTER_CATROM took: 2.58508896828 seconds
FILTER_MITCHELL took: 2.58368492126 seconds
FILTER_LANCZOS took: 3.74232912064 seconds
FILTER_BESSEL took: 4.03305602074 seconds
FILTER_SINC took: 4.90098690987 seconds
I ended up choosing CATROM as it has a very similar result to LANCZOS, but is significantly faster.
billadoid [at ' at '] ['gmail' here] dot com
05-Nov-2008 07:50
05-Nov-2008 07:50
<?php
$height=$thumb->getImageHeight();
$width=$thumb->getImageWidth();
if ($height < $width)
$thumb->scaleImage(800,0);
else
$thumb->scaleImage(0,600);
?>
Something like this will cause a fatal error when you try to create a thumbnail of an uploaded picture of.. 10x15000 resolution.
It will work nice only if you enable the 'fit':
<?php
$height=$thumb->getImageHeight();
$width=$thumb->getImageWidth();
if ($width > 800)
$thumb->scaleImage(800,600,true);
if ($height > 600)
$thumb->scaleImage(800,600,true);
?>
Note: Maybe I misspelled something or though something wrong. i.e. you could think why would I create a thumbnail of 800x600.
Hope it will helps s/o
andrabr at gmail dot com
24-Aug-2007 11:08
24-Aug-2007 11:08
blur: > 1 is blurry, < 1 is sharp
To create a nice thumbnail (LANCZOS is the slowest filter):
<?php
$thumb = new Imagick();
$thumb->readImage('myimage.gif'); $thumb->resizeImage(320,240,Imagick::FILTER_LANCZOS,1);
$thumb->writeImage('mythumb.gif');
$thumb->clear();
$thumb->destroy();
?>
Or, a shorter version of the same:
<?php
$thumb = new Imagick('myimage.gif');
$thumb->resizeImage(320,240,Imagick::FILTER_LANCZOS,1);
$thumb->writeImage('mythumb.gif');
$thumb->destroy();
?>
