laravel 图片流_laravel 做图片的缩略图 踩坑

系统需求 PHP >= 5.3 Fileinfo Extension GD Library (>=2.0) … or … Imagick PHP extension (>=6.5.7)

安装部署 Integration/image 在 composer.json [require] 节增加,之后执行 composer update "intervention/image": "2.0.15"

Laravel 配置 安装部署 Integration/image 完成后,打开配置文件 config/app.php 在相应位置添加代码,然后 Image 类就能自动加载并可供使用了。其功能强大到可以处理你的几乎所有图片处理需求。

use Intervention\Image\Facades\Image;

he GD library does not support custom fonts. You are supposed to use Imagick. Go to config/image.php and edit the driver value to 'imagick' (after you actually install the extension for it):

'driver' => 'imagick'  要安装imagick扩展

asset('/web/fonts/OpenSans-Regular.ttf') returns an URL. You have to provide a path. Use public_path('web/fonts/OpenSans-Regular.ttf') instead. //一定要用绝对路径  不然报错 GD Warning: imagettfbbox(): Could not find/open font

给图片添加文字水印时,中文显示乱码 的解决办法 :一定要引用GD支持的中文字体文件  并 转UTF-8

$fontfile = "simkai.ttf";     /* $fontfile 字体的路径,视操作系统而定,可以是 simhei.ttf(黑体) , SIMKAI.TTF(楷体) , SIMFANG.TTF(仿宋) ,SIMSUN.TTC(宋体&新宋体) 等 GD 支持的中文字体*/$str   = iconv('GB2312','UTF-8','php自学网');     /*将 gb2312 的字符集转换成 UTF-8 的字符*/

//服务提供器 'Intervention\Image\ImageServiceProvider' //别名配置 'Image' => 'Intervention\Image\Facades\Image' 配置设置 默认情况下, Integration/Image 使用PHP的GD库扩展。如果你想切换到 imagick,你可以使用 php artisan 创建一个配置文件以添加相应的配置。 $ php artisan config:publish intervention/imag 基本使用 这里列出几个基本功能,更详细使用说明请查看相关接口文档。1、显示一张图片 Route::get('/', function() { $img = Image::make('foo.jpg')->resize(300, 200); return $img->response('jpg'); }); 2、读取一个图片文件 $img = Image::make('foo/bar/baz.jpg'); 3、绘制一张图片 $img = Image::canvas(800, 600, '#ccc'); 4、编辑一张图片 $img = Image::make('foo.jpg')->resize(320, 240)->insert('watermark.png');

安装:

需求:

PHP >= 5.4

Fileinfo 扩展

GD库 >= 2.0

Imagick 扩展 >=6.5.7

composer安装:

composer require intervention/image

laravel配置:

1.编辑 config/app.php

$providers 添加 'Intervention\Image\ImageServiceProvider::class'

$aliases 添加 ''Image' => Intervention\Image\Facades\Image::class'

2.默认使用的是 'GD' 库,想修改的话,需要配置驱动,我们来生成配置文件:

php artisan vendor:publish --provider="Intervention\Image\ImageServiceProviderLaravel5"

生成 config/image.php 配置文件

3.PHP涉及到的配置项:

memory_limit - 最大内存限制

upload_max_filesize - 如果上传图片时,可能修改

-----

其实,可能还有好多

max_execution_time - 最大执行时间

...

基本使用:

1.使用 Intervention\Image\ImageManager - 图片管理类

use Intervention\Image\ImageManager;

$manager = new ImageManager(array('driver' => 'imagick'));

$manager->make('public/foo.jpg');

2.使用 ImageManager 的静态版本

use Intervention\Image\ImageManagerStatic as Image;

Image::configure(array('driver' => 'imagick'));        ------- api中未出现此方法

Image::make('public/foo.jpg');

HTTP响应:

1.将图像直接返回到用户浏览器的最简单的方法是输出response()方法。 它将根据当前图像自动发送HTTP头,并输出编码的图像数据。

$img = Image::canvas(800, 600, '#ff0000');

echo $img->response('jpg', 70);

2.手动发送HTTP响应

$img = Image::canvas(800, 600, '#ff0000');

header('Content-Type: image/png');

echo $img->encode('png');

在laravel中,同上面的2种方法一样:

3.

$img = Image::canvas(800, 600, '#ff0000');

return $img->response();

4.

$img = Image::canvas(800, 600, '#ff0000');

$response = Response::make($img->encode('png'));

$response->header('Content-Type', 'image/png');

return $response;

图片上传:

1.直接从 $_FILES 中,获取 'tmp' 临时图片数据

$img = Image::make($_FILES['image']['tmp_name']);        // Image::make() 支持这种方式

$img->fit(300, 200);

$img->save('public/bar.jpg');

2.在laravel中处理图片上传

Image::make(Input::file('photo'));                        // Input::file() 来获取$_FILES

图片过滤器:

图片过滤器,给了我们非常有用的方式,将多个图像转换命令集合在一个专用类中。(可将多个图像处理步骤,封装成一个过滤器)。

Intervention/image,提供了基本接口(Intervention\Image\Filters\FilterInterface),所有的过滤器都需要实现它。

调用过滤器:

$img = Image::make('foo.jpg');

$img->filter(new DemoFilter(5));

定义过滤器:

src/Intervention/Image/Filters/DemoFilter.php

namespace Intervention\Image\Filters;

class DemoFilter implements FilterInterface

{

/**

* Default size of filter effects

*/

const DEFAULT_SIZE = 10;

/**

* Size of filter effects

*

* @var integer

*/

private $size;

/**

* Creates new instance of filter

*

* @param integer $size

*/

public function __construct($size = null)

{

$this->size = is_numeric

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值