PHPackages                             minipng/laravel-minipng - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. minipng/laravel-minipng

ActiveLibrary[API Development](/categories/api)

minipng/laravel-minipng
=======================

Laravel package for MiniPNG API integration - Image and PDF processing

1.0.0(1y ago)11MITPHPPHP ^8.0

Since Jun 29Pushed 1y ago1 watchersCompare

[ Source](https://github.com/minipng/laravel-minipng)[ Packagist](https://packagist.org/packages/minipng/laravel-minipng)[ Docs](https://github.com/minipng/laravel-minipng)[ GitHub Sponsors](https://github.com/minipng)[ RSS](/packages/minipng-laravel-minipng/feed)WikiDiscussions master Synced today

READMEChangelogDependencies (4)Versions (2)Used By (0)

Laravel MiniPNG Package
=======================

[](#laravel-minipng-package)

[![Latest Version on Packagist](https://camo.githubusercontent.com/7036c3ac94d2b090edc42ee9f9eb5538eb813c39c393132cabe54314a57410f5/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6d696e69706e672f6c61726176656c2d6d696e69706e672e737667)](https://packagist.org/packages/minipng/laravel-minipng)[![Total Downloads](https://camo.githubusercontent.com/0414f0b45385761ab181b8b693c329dcd1db78cd2879b1b4e4807ab59210b9c1/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6d696e69706e672f6c61726176656c2d6d696e69706e672e737667)](https://packagist.org/packages/minipng/laravel-minipng)[![License](https://camo.githubusercontent.com/862c97c9551914ad9839159803f07424159360cb3405ee75077270a03bb7e9bf/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f6d696e69706e672f6c61726176656c2d6d696e69706e672e737667)](https://github.com/minipng/laravel-minipng/blob/main/LICENSE.md)[![Tests](https://github.com/minipng/laravel-minipng/workflows/Tests/badge.svg)](https://github.com/minipng/laravel-minipng/actions)

Laravel package for integrating with MiniPNG API - Image and PDF processing services.

**Version:** 1.0.0
**Release Date:** June 29, 2025

Features
--------

[](#features)

- 🖼️ **Image Compression** - Compress images while maintaining quality
- 🔄 **Image Format Conversion** - Convert between PNG, JPG, JPEG, WebP, GIF
- 📄 **PDF Compression** - Reduce PDF file sizes
- 🖼️ **PDF to Images** - Convert PDF pages to images
- 👤 **User Profile** - Get API usage information
- 🛡️ **Error Handling** - Comprehensive exception handling
- ⚙️ **Configuration** - Easy configuration management

Requirements
------------

[](#requirements)

- PHP 8.0 or higher
- Laravel 9.0, 10.0, or 11.0
- MiniPNG API key

Getting Started
---------------

[](#getting-started)

### 1. Get Your API Token

[](#1-get-your-api-token)

To use this package, you need a MiniPNG API token:

1. **Create an account or login** at
2. **Get your API token** from
3. **Enjoy 500 free credits** for one month upon registration

### 2. Installation

[](#2-installation)

Install the package via Composer:

```
composer require minipng/laravel-minipng
```

### 3. Publish Configuration

[](#3-publish-configuration)

Publish the configuration file:

```
php artisan vendor:publish --tag=minipng-config
```

### 4. Configure API Key

[](#4-configure-api-key)

Add your MiniPNG API key to your `.env` file:

```
MINIPNG_API_KEY=your_api_key_here
MINIPNG_BASE_URL=https://minipng.com
```

Configuration
-------------

[](#configuration)

The configuration file `config/minipng.php` contains the following options:

```
return [
    'api_key' => env('MINIPNG_API_KEY', ''),
    'base_url' => env('MINIPNG_BASE_URL', 'https://minipng.com'),
    'api_version' => env('MINIPNG_API_VERSION', 'v1'),
    'timeout' => env('MINIPNG_TIMEOUT', 30),
    'retry_attempts' => env('MINIPNG_RETRY_ATTEMPTS', 3),
    'default_image_quality' => env('MINIPNG_DEFAULT_IMAGE_QUALITY', 85),
    'default_pdf_images_quality' => env('MINIPNG_DEFAULT_PDF_IMAGES_QUALITY', 'medium'),
    'default_pdf_images_format' => env('MINIPNG_DEFAULT_PDF_IMAGES_FORMAT', 'png'),
];
```

Usage
-----

[](#usage)

### Using the Facade

[](#using-the-facade)

```
use MiniPNG\LaravelMiniPNG\Facades\MiniPNG;

// Compress an image
$result = MiniPNG::compressImage('https://example.com/image.jpg');

// Convert image format
$result = MiniPNG::convertImage('https://example.com/image.jpg', 'webp', 90);

// Compress PDF
$result = MiniPNG::compressPdf('https://example.com/document.pdf');

// Convert PDF to images
$result = MiniPNG::convertPdfToImages('https://example.com/document.pdf', 'high', 'jpg');

// Get user profile
$profile = MiniPNG::getProfile();
```

### Using Dependency Injection

[](#using-dependency-injection)

```
use MiniPNG\LaravelMiniPNG\Contracts\MiniPNGInterface;

class ImageController extends Controller
{
    public function __construct(private MiniPNGInterface $minipng)
    {
    }

    public function compress(Request $request)
    {
        $result = $this->minipng->compressImage($request->input('image_url'));
        return response()->json($result);
    }
}
```

### Using the Service Container

[](#using-the-service-container)

```
$minipng = app('minipng');
$result = $minipng->compressImage('https://example.com/image.jpg');
```

API Methods
-----------

[](#api-methods)

### Image Processing

[](#image-processing)

#### compressImage(string $sourceUrl): array

[](#compressimagestring-sourceurl-array)

Compress an image file to reduce its size while maintaining quality.

```
$result = MiniPNG::compressImage('https://example.com/image.jpg');
```

#### convertImage(string $sourceUrl, string $outputFormat, ?int $quality = null): array

[](#convertimagestring-sourceurl-string-outputformat-int-quality--null-array)

Convert an image to a different format.

```
// Convert to WebP with 90% quality
$result = MiniPNG::convertImage('https://example.com/image.jpg', 'webp', 90);

// Convert to PNG with default quality
$result = MiniPNG::convertImage('https://example.com/image.jpg', 'png');
```

**Supported formats:** `png`, `jpg`, `jpeg`, `webp`, `gif`

### PDF Processing

[](#pdf-processing)

#### compressPdf(string $sourceUrl): array

[](#compresspdfstring-sourceurl-array)

Compress a PDF file to reduce its size while maintaining quality.

```
$result = MiniPNG::compressPdf('https://example.com/document.pdf');
```

#### convertPdfToImages(string $sourceUrl, ?string $imagesQuality = null, ?string $imagesFormat = null): array

[](#convertpdftoimagesstring-sourceurl-string-imagesquality--null-string-imagesformat--null-array)

Convert a PDF document to a set of images (one per page).

```
// Convert to high-quality JPG images
$result = MiniPNG::convertPdfToImages('https://example.com/document.pdf', 'high', 'jpg');

// Convert to medium-quality PNG images (default)
$result = MiniPNG::convertPdfToImages('https://example.com/document.pdf');
```

**Quality options:** `low`, `medium`, `high`**Format options:** `png`, `jpg`

### User Information

[](#user-information)

#### getProfile(): array

[](#getprofile-array)

Get user profile and API usage information.

```
$profile = MiniPNG::getProfile();
```

Response Format
---------------

[](#response-format)

### Success Response (200/201)

[](#success-response-200201)

```
{
   "success": true,
   "output_ext": "jpg",
   "size_before": 1024000,
   "size_after": 512000,
   "compression_percentage": "50%",
   "download": "https://example.com/compressed/image.jpg"
}
```

### Error Response (400/404/500)

[](#error-response-400404500)

```
{
   "error": "Invalid source URL provided",
   "message": "The provided URL is not accessible or invalid"
}
```

Error Handling
--------------

[](#error-handling)

The package throws `MiniPNGException` for API errors:

```
use MiniPNG\LaravelMiniPNG\Exceptions\MiniPNGException;

try {
    $result = MiniPNG::compressImage('https://example.com/image.jpg');
} catch (MiniPNGException $e) {
    // Handle API errors
    Log::error('MiniPNG API Error: ' . $e->getMessage());
}
```

Examples
--------

[](#examples)

### Controller Example

[](#controller-example)

```
