定制 x000000/storage-manager 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

x000000/storage-manager

Composer 安装命令:

composer require x000000/storage-manager

包简介

Storage manager with thumbnails support

README 文档

README

This project is a PHP library written to make uploading and storing files as easy as possible. And it can make thumbnails you want.

Requirements & Dependency

The library has the following requirements:

  • PHP 5.6+
  • The library has a single dependency - Imagine. This only needed if you what to make thumbnails with storage-manager.

Installation

The preferred way to install this library is through composer.

Either run

php composer.phar require --prefer-dist x000000/storage-manager

or add

"x000000/storage-manager": "^0.3"

to the require section of your composer.json.

Usage

Storing

First of all you need to instantiate Storage object:

<?php

$baseDir = '/path/to/the/storage/directory';
$baseUrl = '/static';
$storage = new \x000000\StorageManager\Storage(
    // this is a full path to the directory where files will be stored in
    $basedir,
    // this is a url to the directory above (how directory will be available by HTTP)
    $baseUrl
);

Now we need to store some files there.

We can make it either with $storage->processFile() and passing full path to the file we want to store:

<?php

$image = $storage->processFile('/full/path/to/image.png');

or if you want to process newly uploaded file you can use $storage->processUploadedFile() and passing an item from $_FILES array:

<?php

$image = $storage->processUploadedFile($_FILES['your_file_key']);

Now if everything is fine we have $image stored in $baseDir and renamed with it md5 content accordingly. For example it could be something like aed0d71a5adaff3a43b75fb4ccc7ff48.png. Yes, we've lost it original name, but we do not store duplicates either.

After successful storing file on your physical disk, you may want to save it to the database too. And you do not have to save a full path to the file, you may save only a file name - $image.

Displaying

Now you may want to display an $image or just share a link to it:

<img src="<?= $storage->getSource($image); ?>" />

That's it. By calling $storage->getSource() we can get a full url (domain not included) to the source file (not only images).

Thumbnails

There are use-cases when you do not want to display an original $image. Or you want to display a nice square thumbnail (hello Instagram). Or just resized/watermarked $image.

To make it possible there is a helper method $storage->thumb():

This $image resized to fit 300 width
<img src="<?= $storage->thumb($image)->resize(300, null); ?>" />

This $image resized to fit 600 height
<img src="<?= $storage->thumb($image)->resize(null, 600); ?>" />

This $image resized to fit 300x600 pixels size
<img src="<?= $storage->thumb($image)->resize(300, 600); ?>" />

This $image resized by the half with saving original aspect ratio
<img src="<?= $storage->thumb($image)->resize('50%', null); ?>" />


This $image cropped with a rectangle sized 50% x 60% from original image with center in 20x30 on original image
<img src="<?= $storage->thumb($image)->crop(20, 30, '50%', '60%'); ?>" />

This $image cropped with a square with a side size of a lowest $image side.
This is Instagram-ish square crop.
<img src="<?= $storage->thumb($image)->crop('50%', '50%', '100%', '100%', Crop::COVER); ?>" />

This $image cropped with a square with a side size of a greatest $image side.
This is Instagram-ish square crop either, but it adds padding instead of cropping the original.
<img src="<?= $storage->thumb($image)->crop('50%', '50%', '100%', '100%', Crop::CONTAIN); ?>" />

This $image cropped with a rectangle with aspect ratio 16:9.
<img src="<?= $storage->thumb($image)->crop('50%', '50%', '100%', null, 16/9); ?>" />


And of course you can chain resize, crop etc...
<img src="<?= $storage->thumb($image)
    ->crop('50%', '50%', '100%', '100%', Crop::COVER)
    ->resize(300, null); ?>" />


If you do not chain any transform url to the source file will be returned:
<img src="<?= $storage->thumb($image); ?>" />
equals to
<img src="<?= $storage->getSource($image); ?>" />

For now, there are only resize and crop supported, but you can use your own image transforms. For more info see Transform::add().

x000000/storage-manager 适用场景与选型建议

x000000/storage-manager 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 1.18k 次下载、GitHub Stars 达 6, 最近一次更新时间为 2016 年 07 月 20 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 x000000/storage-manager 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 x000000/storage-manager 我们能提供哪些服务?
定制开发 / 二次开发

基于 x000000/storage-manager 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 1.18k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 6
  • 点击次数: 13
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 6
  • Watchers: 3
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2016-07-20