前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Guzzle 和 PSR-7在Intervention Image中的应用

Guzzle 和 PSR-7在Intervention Image中的应用

作者头像
咪啪咪啪
发布2019-11-15 20:19:07
1.6K0
发布2019-11-15 20:19:07
举报
文章被收录于专栏:PHP-咪啪咪啪PHP-咪啪咪啪
先了解下PSR-7

HTTP 消息是 Web 技术发展的基础。浏览器或 HTTP 客户端如 curl 生成发送 HTTP 请求消息到 Web 服务器,Web 服务器响应 HTTP 请求。服务端的代码接受 HTTP 请求消息后返回 HTTP 响应消息。 通常 HTTP 消息对于终端用户来说是不可见的,但是作为 Web 开发者,我们需要知道 HTTP 机制,如何发起、构建、取用还有操纵 HTTP 消息,知道这些原理,以助我们刚好的完成开发任务,无论这个任务是发起一个 HTTP 请求,或者处理传入的请求。

更多内容请参考:https://laravel-china.org/docs/psr/psr-7-http-message/1616

Intervention Image是一个开放源码的PHP图像处理和操作库。它提供了一种更简单、更有表现力的方法来创建、编辑和组合图像,并支持当前最常见的两个图像处理库GD库和Imagick。 具体使用方法可以参考:

  1. Laravel内使用:https://laravel-china.org/topics/1903/extension-recommended-interventionimage-image-processing
  2. 官方文档:http://image.intervention.io/getting_started/introduction
下面主要说明一下PSR-7中的stream在这个库中怎么使用的。

使用下面的代码可以生成一个 PSR-7 stream as instance of GuzzleHttp\Psr7\Stream.

代码语言:javascript
复制
// encode png image as jpg stream
$stream = Image::make('public/foo.png')->stream('jpg', 60);

然后有了$stream这个数据流对象,可以调用

代码语言:javascript
复制
$code = $stream->getContents();
file_put_contents('a.png',$code);

这个getContents()方法就是Guzzle实现的PSR-7的Psr\Http\Message\StreamInterface接口

代码语言:javascript
复制
Psr\Http\Message\StreamInterface

实现源码

代码语言:javascript
复制
public function getContents()
{
    $contents = stream_get_contents($this->stream);

    if ($contents === false) {
        throw new \RuntimeException('Unable to read stream contents');
    }
    
    return $contents;
}

所以当我们安装Intervention Image的时候,就会首先安装GuzzleHttp\Psr7这个扩展包,下面是截图

代码语言:javascript
复制
[03:36:47][vagrant@homestead:~/Code/Laravel] (master *)$  composer require intervention/image

Using version ^2.4 for intervention/image
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 3 installs, 0 updates, 0 removals
  - Installing psr/http-message (1.0.1): Loading from cache
  - Installing guzzlehttp/psr7 (1.4.2): Loading from cache
  - Installing intervention/image (2.4.1): Loading from cache
intervention/image suggests installing ext-imagick (to use Imagick based image processing.)
intervention/image suggests installing intervention/imagecache (Caching extension for the Intervention Image library)
Writing lock file
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover
Discovered Package: fideloper/proxy
Discovered Package: laravel/tinker
Discovered Package: intervention/image
Package manifest generated successfully.

可以看到在安装intervention/image的时候,也安装了

代码语言:javascript
复制
  - Installing psr/http-message (1.0.1): Loading from cache
  - Installing guzzlehttp/psr7 (1.4.2): Loading from cache
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 先了解下PSR-7
  • 下面主要说明一下PSR-7中的stream在这个库中怎么使用的。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档