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.특색 기능
    위 에서 소개 한 기본 용법 을 제외 하고 이 확장 패 키 지 는 다음 과 같이 지원 합 니 다.
  • 사진 업로드 기능;
  • 이미지 캐 시 기능;
  • 4.567917.이미지 필터 기능:그림 을 통 일 된 규칙 에 따라 변환 합 니 다
  • 이미지 동적 처리:방문 한 이미지 의 URL 매개 변수 에 따라 이미지 크기 를 자동 으로 조정 합 니 다
  • 더 많은 예 는 걸음 을 옮 겨 주세요공식 문서참고 하 세 요.
    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 배 이상 차이 가 난다.

    왜 이런 현상 이 발생 했 는 지 에 대해 서 는 자신 도 잘 모 르 겠 지만 이것 은 비교적 유용 하고 작은 경험 임 에 틀림없다.
    총결산
    이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

    좋은 웹페이지 즐겨찾기