Intervention Image — библиотека с простым API для работы с изображениям.
Что библиотека умеет:
Вы можете использовать Intervention Image двумя способами:
// open an image file
$img = Image::make('public/foo.jpg');
// now you are able to resize the instance
$img->resize(320, 240);
// and insert a watermark for example
$img->insert('public/watermark.png');
// finally we save the image as a new file
$img->save('public/bar.jpg');
Либо, через цепочку вызовов:
$img = Image::make('public/foo.jpg')
->resize(320, 240)
->insert('public/watermark.png')
->save('public/bar.jpg');
Помимо статического вызова, можно создать объект, и работать с ним:
// include composer autoload
require 'vendor/autoload.php';
// import the Intervention Image Manager Class
use Intervention\Image\ImageManager;
// create an image manager instance with favored driver
$manager = new ImageManager(array('driver' => 'imagick'));
// to finally create image instances
$image = $manager->make('public/foo.jpg')->resize(300, 200);
Для разработчиков Laravel, всё работает из коробки.
Один extensions проверять мало, по хорошему еще нужен MIME type
public function rules()
{
return [
['avatar', 'image', 'extensions' => 'png, jpg, gif',
'mimeTypes'=>'image/jpeg, image/png, image/gif',
'minWidth' => 200, 'minHeight' => 200
]
];
}
Всё больше меня радует Yii2, столько вещей уже продумано за нас. Возможно, вы уже слышали об этом, а возможно, и нет. В Yii2 есть различные валидаторы, которые очень сильно сэкономят вам время. Например, офф. документация по валидаторам.
Пример, работы валидатора для изображений:
Указываем имя поля, типа валидатора и ваши правила в модели:
public function rules()
{
return [['avatar', 'image', 'extensions' => 'png, jpg, gif','minWidth' => 200, 'minHeight' => 200]];
}
Если у вас много битых картинок, вы можете их либо скрыть, либо заменить в них урл:
// Прячем битую картинку
$("img").error(function(){
$(this).hide();
});
// Заменяем урл у битой картинки
$('img').error(function(){
$(this).attr('src', 'img-broken.png');
});
Сделать это можно с помощью библиотеки html2canvas:
$(document).ready(function() {
// Скриншот элемента
html2canvas($('#items'), {
onrendered: function(canvas) {
$('body').append(canvas);
}
});
// Скриншот страницы
html2canvas($('body'), {
onrendered: function(canvas) {
$('body').append(canvas);
}
});
});