windwork/image

windwork image component, implement thumb and watermark function. windwork图片处理组件,生支持成缩略图和打水印功能。

0.7.0 2017-06-26 17:30 UTC

This package is not auto-updated.

Last update: 2024-05-12 02:15:15 UTC


README

支持图片缩略图和打水印,兼容各种第三方云存贮。 处理图片后,为方便云存贮处理,不直接保存图片,而是返回图片二进制内容。

安装

该组件已包含在Windwork框架中,如果你已安装Windwork框架则可以直接使用。

  • 安装方式一:通过composer安装(推荐)
composer require windwork/wf
  • 安装方式二:传统方式安装
    下载源码后,解压源码到项目文件夹中,然后require_once $PATH_TO_WF/core/lib/Loader.php文件,即可自动加载组件中的类。

生成缩略图

$img = wfImage();
// 设置源图片内容
$img->setImage(file_get_contents('src_image/1.png'));

// 生成200x200的缩略图,超过比例截掉
$cutPos = 5; // 裁剪后保留位置 1:左上, 2:中上, 3右上, 4:左中, 5:中中, 6:右中,7:左下, 8:中下,9右下
$dist = 'dist_image/thumb.png.cut_100x200.jpg'; // 图片保存路径
$imgCtx = $img->thumb(200, 200, true, $cutPos); // 为方便云存贮处理,不直接保存图片,而是返回图片二进制内容

file_put_contents($dist, $imgCtx);

// 生成100x200的缩略图,超过比例则补白色背景
$img->thumb(100, 200, false);

打水印

$img = wfImage();

// 设置源图片内容
$img->setImage(file_get_contents('src_image/1.png'));

// 给图片内容打水印后,保存到'dist_image/water.png.jpg'
$ret = $img->watermark('src_image/logo.png');
file_put_contents('dist_image/water.png.jpg', $ret


Windwork图片处理接口

<?php

namespace wf\image;

/**
 * 图像处理接口
 */
interface ImageInterface {
    
    /**
     * 设置图片二进制内容
     * 
     * @param string $imageContent
     * @return \wf\image\Image
     */
    public function setImage($imageContent);
    
    /**
     * 设置图片背景颜色,当图片透明时或不截取图片
     * 
     * @param int $r 0 - 255
     * @param int $g 0 - 255
     * @param int $b 0 - 255
     */
    public function setBgColor($r, $g, $b);
    
    /**
     * 生成缩略图
     * 宽度不小于$thumbWidth或高度不小于$thumbHeight的图片生成缩略图
     * 建议缩略图和被提取缩略图的文件放于同一目录,文件名为“被提取缩略图文件.thumb.jpg”
     *
     * @param int $thumbWidth
     * @param int $thumbHeight
     * @param bool $isCut = true 是否裁剪图片,true)裁掉超过比例的部分;false)不裁剪图片,图片缩放显示,增加白色背景
     * @param int $cutPlace = 5  裁剪保留位置 1:左上, 2:中上, 3右上, 4:左中, 5:中中, 6:右中,7:左下, 8:中下,9右下
     * @param int $quality = 95  生成的缩略图质量
     * @return bool|string
     * @throws \wf\image\Exception
     */
    public function thumb($thumbWidth, $thumbHeight, $isCut = true, $cutPlace = 5, $quality = 95);
    
    /**
     * 给图片打水印
     * 建议用gif或png图片做水印,jpg不能设置透明,故不推荐用
     *
     * @param string $watermarkFile = 'static/images/watermark.png' 水印图片
     * @param int $watermarkPlace = 9 水印放置位置 1:左上, 2:中上, 3右上, 4:左中, 5:中中, 6:右中,7:左下, 8:中下,9右下
     * @param int $quality = 95 被打水印后的新图片(相对于打水印前)质量百分比
     * @return bool|string
     */
    public function watermark($watermarkFile = 'static/images/watermark.png', $watermarkPlace = 9, $quality = 95);
}

TODO

  • gif动态图打水印后返回动态缩略图。
  • 增加支持使用ImageMagick库进行处理图片


要了解更多?