承接 harorudo/media-compressor 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

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

harorudo/media-compressor

Composer 安装命令:

composer require harorudo/media-compressor

包简介

A Laravel utility for compressing images, PDFs, and files - powered by Intervention Image and Ghostscript

README 文档

README

A Laravel utility for compressing images, PDFs, and files — powered by Intervention Image and Ghostscript.

Requirements

Installation

composer require harorudo/media-compressor

Laravel auto-discovers the service provider. No manual registration needed.

Verify your environment

Run the doctor command to confirm Ghostscript and the image backend are installed:

php artisan compression:doctor

Install Ghostscript

Ubuntu / Debian:

sudo apt-get install ghostscript

macOS:

brew install ghostscript

Windows: Download from ghostscript.com/releases and ensure gswin64c.exe is in your PATH.

Configuration

Publish the config file:

php artisan vendor:publish --tag=compression-config

config/compression.php:

return [
    'allowed_disks'  => ['public', 's3'],
    'max_file_size'  => 20 * 1024 * 1024, // 20 MB
];

Usage

Inject CompressionUtil directly or use the Compression facade.

Images

use Harorudo\MediaCompressor\Facades\Compression;

// Compress an uploaded image
$result = Compression::compressImage(
    file: $request->file('photo'),
    quality: 75,
    maxWidth: 1280,
    format: 'webp'         // 'original' | 'webp' | 'jpeg' | 'png'
);

// Compress multiple images
$results = Compression::compressImages($request->file('photos'));

// Re-compress an already stored image
$result = Compression::recompressStoredImage('images/avatar.jpg', quality: 60);

PDFs

// Compress an uploaded PDF
$result = Compression::compressPdf(
    file: $request->file('document'),
    preset: 'ebook'        // 'screen' | 'ebook' | 'printer' | 'prepress'
);

// Re-compress a stored PDF
$result = Compression::recompressStoredPdf('pdfs/report.pdf', preset: 'ebook');

// Bulk re-compress stored PDFs
$results = Compression::recompressStoredPdfs(['pdfs/a.pdf', 'pdfs/b.pdf']);

PDF presets

Preset Image DPI Best for
screen 72 Email attachments, smallest size
ebook 150 General use — recommended default
printer 300 High-quality downloads
prepress 300 + colour Print-ready, near-lossless

ZIP

// Zip a single uploaded file
$result = Compression::zipUploadedFile($request->file('document'));

// Zip multiple stored files into one archive
$result = Compression::zipFiles(
    storagePaths: ['docs/report.pdf', 'docs/invoice.pdf'],
    archiveName: 'reports'
);

Return value

Every method returns an array with savings stats:

[
    'path'            => 'pdfs/report.pdf',
    'original_size'   => 2048000,
    'compressed_size' => 819200,
    'saved_bytes'     => 1228800,
    'saved_percent'   => 60.0,
]

Security

This package enforces the following guards on every operation:

  • MIME type validation — server-side detection, client header is never trusted
  • File size limit — configurable via compression.max_file_size
  • Storage disk allowlist — configurable via compression.allowed_disks
  • Directory sanitization — strips invalid characters to prevent path traversal
  • Safe filenames — client filenames never touch the filesystem; hashed names are always used
  • Temp file cleanup — guaranteed via finally blocks, even on failure

License

MIT © Eddy Harold

harorudo/media-compressor 适用场景与选型建议

harorudo/media-compressor 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 12 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 04 月 09 日, 在 PHP 生态内属于活跃度较高的组件。

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

围绕 harorudo/media-compressor 我们能提供哪些服务?
定制开发 / 二次开发

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

BUG 修复 & 性能优化

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

项目外包 & 长期维护

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

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

统计信息

  • 总下载量: 12
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 28
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

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

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-04-09