Laravel 图像干预调整大小质量损失
Laravel Image Intervention resize quality loss
在我的 Laravel 网络应用程序中,我使用了 Intervention Image library。我正在保存上传图片的三个版本:'original'
、'500_auto'
和自定义尺寸图片。
$image = Image::make(Input::file('file');
// Save the orignal image
$image->save($folder . 'original.' . $extension);
// Save 500_auto image
$image->resize(500, null, function($constraint) {
$constraint->aspectRatio();
});
$image->save($folder . '500_auto.' . $extension, 100);
// Check if size is set
if (isset($config->images->width) && isset($config->images->height)) {
// Assign values
$width = $config->images->width;
$height = $config->images->height;
// Create the custom thumb
$image->resize($width, $height, function($constraint) {
$constraint->aspectRatio();
});
$image->save($folder . $width . '_' . $height . '.' . $extension, 100);
}
Intervention 的驱动程序在配置中设置为'gd'
:
'driver' => 'gd'
这是我正在上传的图片:original.jpg
这是自定义缩略图的结果,配置设置设置为精确的原始大小 (1800 x 586):1800_586.jpg
如您所见,第二张图片在调整大小后质量损失很大。我该如何解决这个问题?
您首先将图像调整为小格式,然后将小图像再次调整为原始大小。如果您颠倒顺序,您将改为从原始尺寸 -> 原始尺寸 -> 小尺寸。
就个人而言,我通常更喜欢为每个新图像重做 Image::make()
调用,只是为了确保我不会在这个过程中搞砸这样的事情。
您可以使用"backup()"方法来保存对象的状态和"reset()"方法来return回到备份状态:
// 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');
此页面的更多信息:
http://image.intervention.io/api/reset
在我的 Laravel 网络应用程序中,我使用了 Intervention Image library。我正在保存上传图片的三个版本:'original'
、'500_auto'
和自定义尺寸图片。
$image = Image::make(Input::file('file');
// Save the orignal image
$image->save($folder . 'original.' . $extension);
// Save 500_auto image
$image->resize(500, null, function($constraint) {
$constraint->aspectRatio();
});
$image->save($folder . '500_auto.' . $extension, 100);
// Check if size is set
if (isset($config->images->width) && isset($config->images->height)) {
// Assign values
$width = $config->images->width;
$height = $config->images->height;
// Create the custom thumb
$image->resize($width, $height, function($constraint) {
$constraint->aspectRatio();
});
$image->save($folder . $width . '_' . $height . '.' . $extension, 100);
}
Intervention 的驱动程序在配置中设置为'gd'
:
'driver' => 'gd'
这是我正在上传的图片:original.jpg
这是自定义缩略图的结果,配置设置设置为精确的原始大小 (1800 x 586):1800_586.jpg
如您所见,第二张图片在调整大小后质量损失很大。我该如何解决这个问题?
您首先将图像调整为小格式,然后将小图像再次调整为原始大小。如果您颠倒顺序,您将改为从原始尺寸 -> 原始尺寸 -> 小尺寸。
就个人而言,我通常更喜欢为每个新图像重做 Image::make()
调用,只是为了确保我不会在这个过程中搞砸这样的事情。
您可以使用"backup()"方法来保存对象的状态和"reset()"方法来return回到备份状态:
// 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');
此页面的更多信息: http://image.intervention.io/api/reset