我想使用干预调整图像大小两次。
我现在有这个:
$img = Image::make($image_url);
$img_path = public_path() . '/images/';
$img->fit(500, 250);
$img->save($img_path . '/img_250.jpg');
$img = Image::make($image_url);
$img->fit(100, 100);
$img->save($img_path . '/img_100.jpg');
如您所见,我首先要将原始图像的大小调整为 500x250,然后我想再次将 原始图像(不是 500x250 图像)调整为 100x100。
有没有办法做到这一点而不需要两次调用
Image::make()
?
答案如下:
http://image.intervention.io/api/reset
// create an image
$img = Image::make('public/foo.jpg');
// backup status
$img->backup();
// perform some modifications
$img->resize(320, 240);
$img->invert();
$img->save('public/small.jpg');
// reset image (return to backup state)
$img->reset();
// perform other modifications
$img->resize(640, 480);
$img->invert();
$img->save('public/large.jpg');
我发布此内容是为了帮助可能遇到类似问题的其他人。虽然我们可以实现@user6421733的答案...有更好的方法来处理不同尺寸的图像。
考虑使用 Intervention 的 imagecache 可选包。您也可以简单地实现它。 http://image.intervention.io/use/url
它可以让您使用这样的网址
http://yourhost.com/{route-name}/original/{file-name}
并且只需很少或更少的努力:
在版本 3 中,这样做是这样的:
// original image 800 x 600
$img = $imageManager->read('public/foo.jpg');
// small version
$small = clone $img;
$small->resize(320, 240);
$small->save('public/small.jpg');
// large version
$img->resize(640, 480);
$img->save('public/large.jpg');