Laravel Intervention/image 이미지 처리 확장 패키지 의 설치,사용 및 만 날 수 있 는 구덩이 에 대한 상세 한 설명
Intervention/image 는 Laravel 을 위 한 맞 춤 형 이미지 처리 도구 로 표현 하기 쉬 운 방식 으로 그림 을 만 들 고 편집 할 수 있 습 니 다.
데모 코드 참조:
Github: https://github.com/zhengjinghua/est-image-demo
로 컬 다운로드:http://xiazai.jb51.net/201711/yuanma/est-image-demo(jb51.net).rar
Demo
데모 캡 처
데모 실행
문 서 를 참조 하 십시오어떻게 Homestead 를 이용 하여 Laravel 프로젝트 를 빠르게 실행 합 니까?
글 개관
설치;
다음은 상세 한 해설 이다.
1.설치
1).composer 로 설치:
composer require intervention/image
상부 의 명령 회2).app/config/app.php 를 수정 하여 ServiceProvider 를 추가 합 니 다.
// providers
'providers' => [
// ...
Intervention\Image\ImageServiceProvider::class,
// ...
],
// aliases
'aliases' => [
// ...
'Image' => Intervention\Image\Facades\Image::class,
// ...
],
2.그림 처리 라 이브 러 리 설정이 확장 패 키 지 는 기본적으로 PHP 의 GD 라 이브 러 리 를 사용 하여 이미지 처 리 를 합 니 다.그러나 GD 라 이브 러 리 는 이미지 처리 효율 이 imagemagick 라 이브 러 리 보다 약간 떨 어 지기 때문에 imagemagick 라 이브 러 리 로 바 꾸 어 이미지 처 리 를 하 는 것 을 추천 합 니 다.
시작 하기 전에 로 컬 에 GD 나 Imagick 이 설치 되 어 있 는 지 확인 해 야 합 니 다.
Intervention Image 를 사용 할 때 Image Manager 에 하나의 배열 매개 변 수 를 전달 하면 GD 와 Imagick 라 이브 러 리 간 의 상호 전환 을 완성 할 수 있 습 니 다.
다음 과 같다.
// composer autoload
require 'vendor/autoload.php';
// Intervention Image Manager Class
use Intervention\Image\ImageManager;
// driver image manager
$manager = new ImageManager(array('driver' => 'imagick'));
// image
$image = $manager->make('public/foo.jpg')->resize(300, 200);
또한 ImageManager 의 정적 버 전 을 사용 할 수 있 습 니 다.다음 과 같 습 니 다.
// composer autoload
require 'vendor/autoload.php';
// Intervention Image Manager Class
use Intervention\Image\ImageManagerStatic as Image;
// driver image manager ( gd)
Image::configure(array('driver' => 'imagick'));
// image
$image = Image::make('public/foo.jpg')->resize(300, 200);
config/image.php 설정 파일 생 성:
php artisan vendor:publish --provider="Intervention\Image\ImageServiceProviderLaravel5"
위의 명령 을 실행 하면 프로젝트 에 config/image.phop 설정 파일 을 생 성하 고 이 파일 을 열 고 driver 를 imagick 으로 수정 합 니 다.
return array(
'driver' => 'imagick'
);
여기까지,이 확장 패 키 지 는 설치 성공!3.기초 용법
//
$img = Image::make('images/avatar.jpg')->resize(200, 200);
// , , 10 , 15
$img->insert('images/watermark.png', 'bottom-right', 15, 10);
//
$img->save('images/new_avatar.jpg');
/* */
$img = Image::make('images/avatar.jpg')->resize(200, 200)->insert('images/new_avatar.jpg', 'bottom-right', 15, 10);
4.특색 기능위 에서 소개 한 기본 용법 을 제외 하고 이 확장 패 키 지 는 다음 과 같이 지원 합 니 다.
intervention/image 의 작은 구덩이 와 그 해법
사실 intervention/iamge 는 사용 한 지 오래 되 었 습 니 다.api 는 간결 하 게 디자인 되 었 고 문서 도 전면적 이 며 사용 하기에 상당히 편리 합 니 다.
근 데 최근 에 본의 아니 게 작은 구 덩이 를 발 견 했 어 요.위 챗 프로필 사진 이 있 는 QR 코드 를 합성 해 야 하기 때문에 저 는 Image:make($avatarUrl)(여기 있 는$avatarUrl 은 위 챗 프로필 사진 의 링크)를 사용 하여 프로필 사진 을 만 든 다음 에 QR 코드 이미지 에 합성 합 니 다(예 를 들 어 템 플 릿 배경,텍스트 쓰기 등).
쓰 고 나 서 실행 하 니 상당히 느 려 서 평균 23 초 정도 걸 렸 다.처음에는 합성 과정 에서 진행 되 는 조작 이 많 고 사이즈 가 커서 그런 줄 알 았 는데 원래 이 속도 여야 했다.그러나 나중에 한가 해 지면 서 최 적 화 를 시도 하기 시작 했다.속 도 를 올 리 지 못 하 더 라 도 적어도 무슨 원인 이 이렇게 시간 이 걸 리 는 지 알 아야 한다.
이 같은 고생 끝 에 진실 은 합성 작업 의 얼마,사이즈 와 큰 관계 가 없다 는 것 을 알 게 되 었 다.관건 은 내 가 프로필 데 이 터 를 만 드 는 자세 다.
이 문 제 를 설명 하기 위해 서 특별히 아래 의 코드 를 써 서 비교 하 였 다.
//
$startTimestamp = microtime(true);
$url = 'http://wx.qlogo.cn/mmopen/XxT9TiaJ1ibf06TNRCMjQADS4opDHvQLguLZHpqkRlvuJYZicvJW4iaOalPsKIs0kpZ3F6864ZzibyObYiaucUQSrdp4pFTNDyIpxw/0';
$avatar = \Image::make($url);
//
$endTimestamp = microtime(true);
info($startTimestamp);
info($endTimestamp);
info($endTimestamp - $startTimestamp);
위의 코드 는 Image:make($url)형식 을 사용 하여 url 에서 프로필 사진 을 직접 생 성 합 니 다.기 록 된 로그 데 이 터 를 보면 기본적으로 16 초 정도 걸린다.
나중에 새로운 자 세 를 생각 했 는데 사실은 최 적 화 를 시도 하 는 과정 에서 괴 롭 혔 을 때 생각 한 것 이다.다음 코드 참조:
$startTimestamp = microtime(true);
$client = new \GuzzleHttp\Client();
$url = 'http://wx.qlogo.cn/mmopen/XxT9TiaJ1ibf06TNRCMjQADS4opDHvQLguLZHpqkRlvuJYZicvJW4iaOalPsKIs0kpZ3F6864ZzibyObYiaucUQSrdp4pFTNDyIpxw/0';
$avatarResponse = $client->get($url);
$avatar = \Image::make($avatarResponse->getBody()->getContents());
$endTimestamp = microtime(true);
info($startTimestamp);
info($endTimestamp);
info($endTimestamp - $startTimestamp);
여기 서 저 는 먼저 GuzzleHttp 를 사용 하여 프로필 사진 을 가 져 온 다음 에 Image:make($data)를 사용 하여 프로필 사진 을 만 듭 니 다.조심 하 세 요.하 이 라이트...선글라스.
아래 로그 캡 처 를 보면 세 번 평균 0.07 초 정도 걸 리 며 앞의 16 초 에 비해 200 배 이상 차이 가 난다.
왜 이런 현상 이 발생 했 는 지 에 대해 서 는 자신 도 잘 모 르 겠 지만 이것 은 비교적 유용 하고 작은 경험 임 에 틀림없다.
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.