brediweb/imagemupload 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

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

brediweb/imagemupload

Composer 安装命令:

composer require brediweb/imagemupload

包简介

Pacote de upload de imagens para Laravel

README 文档

README

Sua contribuição ajuda na manutenção do pacote e criação de muitos outros. Faça de coração ♥

Laravel Imagem Upload

Faça upload de imagens ainda mais facilmente no Laravel

Este pacote facilita o upload de imagens e renderização delas sem você precisar criar pastas e link simbólico. Envie imagens e redimensione em diversos tamanhos para seu site.

O que ele fará por você:

  • enviar imagens para uma pasta não publica
  • criar automáticamente os diretórios de imagens
  • redimensionar para quantos tamanhos desejar
  • renderizar imagens escondendo a pasta de origem

Instalação

requer Laravel >= 5.5 e PHP 7.1:

composer require brediweb/imagemupload

Exemplo de uso

Não é bom carregar uma imagem de 1200x1200 pixels para exibir em uma miniatura de 100x100 pixels, por exemplo. A melhor opção seria ter a imagem em vários tamanhos diferentes. Exemplo:

exemplo-imagem Você pode ter imagens em quantos tamanhos desejar.

Enviando uma imagem

Passo #1 em seu formulário html:

<!--Para enviar apenas uma imagem-->
<input type="file" name="user" />

Passo #2 em seu Controller coloque as configurações:

use Brediweb\ImagemUpload\ImagemUpload;

 public function __construct()
 {
 	$this->user = [
		'input_file' => 'user', //nome do input
		'destino' => 'users/', //Pasta que será criada automáticamente dentro de storage/app/public/
    		'resolucao' => ['p' => ['h' => 200, 'w' => 200], 'm' => ['h' => 400, 'w' => 400], ...] //Não há limites de quantos tamanhos podem ser configuradas.
      ];
}
	
public function store(Request $request)
{
    $input = $request->all();

    $imagens = ImagemUpload::salva($this->user);
		//retorno: image-example_3fc5ac232a6e60a10ca20a90350954a9.jpg
    if ($imagens) {
	// a função retorna o novo nome da imagem. guarde em seu banco de dados.
	$input['imagem'] = $imagens;
    }
}

O pacote vai criar as pastas p e m dentro de users/

storage/app/public/users/p/image-example_3fc5ac232a6e60a10ca20a90350954a9.jpg imagem 200X200

storage/app/public/users/m/image-example_3fc5ac232a6e60a10ca20a90350954a9.jpg imagem 400x400

Passo #3 renderizando a imagem:

<img src="{{ route('imagem.render', 'users/p/' . $user->imagem) }}" />

OBS: use a rota 'imagem.render' para renderizar as imagens, seguindo com o nome da pasta (users) e tamanho (pasta p, m, etc.).

Deletando uma imagem:

em seu Controller:

public function destroy($id)
{
	$user = User::find($id);
            
	$imagem = $user->imagem;

	$this->user['imagem'] = $imagem; // acrescente ao array o indice "imagem", e como valor, o nome da imagem.

	$user->delete();
	
	if (!empty($imagem)) {
		ImagemUpload::deleta($this->user); // $this->user é o array com todas as configurações de envio de imagens.
	}

	return redirect()->route('users.list')->with('msg', 'registro excluido com sucesso!');
}

OBS: $this->user, é o seu array com as configurações de envio de suas imagens. A função deleta() irá apagar do disco todas as imagens em suas respectivas pastas.

Enviando várias imagens

Caso queira enviar várias imagens, é muito simples: Passo #1 em seu formulário html:

<input type="file" name="galeria[]" multiple />

Passo #2 em seu Controller coloque as configurações:

use Brediweb\ImagemUpload\ImagemUpload;

 public function __construct()
 {
 	$this->galeria = [
		'input_file' => 'galeria', //nome do input
		'destino' => 'galeria/',
    		'resolucao' => ['p' => ['h' => 200, 'w' => 200], 'm' => ['h' => 400, 'w' => 400], ...]
      ];
}
	
public function store(Request $request)
{
	$input = $request->all();

	$imagens = ImagemUpload::salva($this->galeria);
	/*
	$imagens retorna: 
	array (
		image-example_3fc5ac232a6e60a10ca20a90350954a9.jpg,
		image-example_3fc5ac232a6e60a10ca20a90350954a9.jpg
	)
	*/
	if ($imagens) {
		// guarde o nome das imagens em seu banco de dados
		$input['imagens'] = $imagens;
	}
}

OBS: Ao enviar várias imagens, você recebe um array com o novo nome das imagens.

Apenas mover uma imagem e manter o tamanho original

 $this->user = [
 	'input_file' => 'user',
	'destino' => 'users/'
  ];

Redimencionar imagens e manter também a original

 $this->user = [
 	'input_file' => 'user',
	'destino' => 'users/',
	'resolucao' => ['p' => ['h' => 200, 'w' => 200], 'm' => ['h' => 400, 'w' => 400], 'pasta_original'] 
	// Apenas coloque o nome do indice que será o nome da pasta com as imagens originais.
  ];

Mais informações serão acrescentadas à este documento. Qualquer dúvida, entre em contato.

brediweb/imagemupload 适用场景与选型建议

brediweb/imagemupload 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 1.4k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2021 年 07 月 16 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「image」 「upload」 「resize」 「laravel」 「imagem」 「laravel-upload」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

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

围绕 brediweb/imagemupload 我们能提供哪些服务?
定制开发 / 二次开发

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

BUG 修复 & 性能优化

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

项目外包 & 长期维护

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

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

统计信息

  • 总下载量: 1.4k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 9
  • 依赖项目数: 3
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: Unknown
  • 更新时间: 2021-07-16