使用Laravel 5干预图像将白色space添加到图像以制作正方形图像
Add white space to image using Laravel 5 intervention image to make square image
假设我有一个最喜欢的正方形尺寸,在本例中它有 2236 px
宽度和高度。
我需要使用 php intervention package
.
在我的服务器上保存此尺寸的图像
用户的图片大小不重要,关键是图片必须以新的大小保存,但用户图片必须在中心和中间正方形 如果图片小于我喜欢的尺寸,则必须拉伸,如果图片较大,则必须压缩到我喜欢的尺寸。
请看这张图:
下面是一些真实的例子:
有没有人遇到过这种情况,你知道我该怎么做吗?
提前致谢
<?php
$width = 2236;
$height = 2236;
$img = Image::make('image.jpg');
// we need to resize image, otherwise it will be cropped
if ($img->width() > $width) {
$img->resize($width, null, function ($constraint) {
$constraint->aspectRatio();
});
}
if ($img->height() > $height) {
$img->resize(null, $height, function ($constraint) {
$constraint->aspectRatio();
});
}
$img->resizeCanvas($width, $height, 'center', false, '#ffffff');
$img->save('out.jpg');
好吧,感谢@Anton
的提示,我这样做是为了解决我的问题:
图像是水平矩形、垂直矩形或正方形。
我针对每种情况编写了这些代码行,它非常适合我的情况
$img = Image::make($image->getRealPath());
$width = $img->width();
$height = $img->height();
/*
* canvas
*/
$dimension = 2362;
$vertical = (($width < $height) ? true : false);
$horizontal = (($width > $height) ? true : false);
$square = (($width = $height) ? true : false);
if ($vertical) {
$top = $bottom = 245;
$newHeight = ($dimension) - ($bottom + $top);
$img->resize(null, $newHeight, function ($constraint) {
$constraint->aspectRatio();
});
} else if ($horizontal) {
$right = $left = 245;
$newWidth = ($dimension) - ($right + $left);
$img->resize($newWidth, null, function ($constraint) {
$constraint->aspectRatio();
});
} else if ($square) {
$right = $left = 245;
$newWidth = ($dimension) - ($left + $right);
$img->resize($newWidth, null, function ($constraint) {
$constraint->aspectRatio();
});
}
$img->resizeCanvas($dimension, $dimension, 'center', false, '#ffffff');
$img->save(public_path("storage/{$token}/{$origFilename}"));
/*
* canvas
*/
假设我有一个最喜欢的正方形尺寸,在本例中它有 2236 px
宽度和高度。
我需要使用 php intervention package
.
用户的图片大小不重要,关键是图片必须以新的大小保存,但用户图片必须在中心和中间正方形 如果图片小于我喜欢的尺寸,则必须拉伸,如果图片较大,则必须压缩到我喜欢的尺寸。
请看这张图:
下面是一些真实的例子:
有没有人遇到过这种情况,你知道我该怎么做吗?
提前致谢
<?php
$width = 2236;
$height = 2236;
$img = Image::make('image.jpg');
// we need to resize image, otherwise it will be cropped
if ($img->width() > $width) {
$img->resize($width, null, function ($constraint) {
$constraint->aspectRatio();
});
}
if ($img->height() > $height) {
$img->resize(null, $height, function ($constraint) {
$constraint->aspectRatio();
});
}
$img->resizeCanvas($width, $height, 'center', false, '#ffffff');
$img->save('out.jpg');
好吧,感谢@Anton
的提示,我这样做是为了解决我的问题:
图像是水平矩形、垂直矩形或正方形。
我针对每种情况编写了这些代码行,它非常适合我的情况
$img = Image::make($image->getRealPath());
$width = $img->width();
$height = $img->height();
/*
* canvas
*/
$dimension = 2362;
$vertical = (($width < $height) ? true : false);
$horizontal = (($width > $height) ? true : false);
$square = (($width = $height) ? true : false);
if ($vertical) {
$top = $bottom = 245;
$newHeight = ($dimension) - ($bottom + $top);
$img->resize(null, $newHeight, function ($constraint) {
$constraint->aspectRatio();
});
} else if ($horizontal) {
$right = $left = 245;
$newWidth = ($dimension) - ($right + $left);
$img->resize($newWidth, null, function ($constraint) {
$constraint->aspectRatio();
});
} else if ($square) {
$right = $left = 245;
$newWidth = ($dimension) - ($left + $right);
$img->resize($newWidth, null, function ($constraint) {
$constraint->aspectRatio();
});
}
$img->resizeCanvas($dimension, $dimension, 'center', false, '#ffffff');
$img->save(public_path("storage/{$token}/{$origFilename}"));
/*
* canvas
*/