joassanon/image-optimizer 问题修复 & 功能扩展

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

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

joassanon/image-optimizer

Composer 安装命令:

composer require joassanon/image-optimizer

包简介

On-demand image optimization endpoint for Laravel

README 文档

README

This repository contains two related packages:

  • @joassanon/optimized-image — a React component for responsive optimized image delivery
  • joassanon/image-optimizer — a Laravel image optimization endpoint that serves /img

The React component is built to work with the Laravel backend in the same repository. It generates responsive srcset/sizes markup and calls /img with query parameters.

What is included

  • src/OptimizedImage.tsx — React component
  • src/index.ts — package exports
  • src/OptimizedImage.test.tsx — Vitest-powered test suite
  • composer.json + Laravel service provider + controller — backend endpoint implementation

Installation

React package

npm install @joassanon/optimized-image

or

yarn add @joassanon/optimized-image

Laravel backend

Install the Laravel package as a dependency:

composer require joassanon/image-optimizer

If your Laravel app does not auto-discover providers, register it manually:

Vendor\\ImageOptimizer\\ImageOptimizerServiceProvider::class,

Publish config if required:

php artisan vendor:publish --provider="Vendor\\ImageOptimizer\\ImageOptimizerServiceProvider" --tag=config

Backend endpoint

The backend exposes a single route at /img.

Supported query params:

  • src — local image path, e.g. images/products/shoe.jpg
  • w — width in pixels
  • q — quality (10–95)
  • fm — optional output format (webp, avif, png, jpeg)
  • fit — optional fit mode, defaults to max

Important: the current Laravel endpoint only accepts src values beginning with images/ and expects the file to exist on the configured filesystem disk.

React usage

import { OptimizedImage } from '@joassanon/optimized-image';

export default function ProductImage() {
  return (
    <OptimizedImage
      src="images/products/shoe.jpg"
      alt="Running shoe"
      widths={[320, 640, 960, 1280]}
      sizes="(max-width: 768px) 100vw, 50vw"
      quality={80}
      format="webp"
      priority={false}
      placeholder="images/products/shoe-blur.jpg"
      className="responsive-image"
      style={{ borderRadius: '8px' }}
    />
  );
}

Notes

  • src should be a local storage path, not an external URL, when using the bundled Laravel backend.
  • The component builds /img?src=...&w=...&q=... for each width.
  • If format is omitted, the backend negotiates the format from the browser Accept header.

Props

Prop Type Default Description
src string required Local image path passed to /img, e.g. images/photo.jpg
alt string '' Alternative text for the image
widths number[] [320, 480, 768, 1024, 1366, 1600, 1920] Widths used to generate srcset
sizes string 100vw Value for the sizes attribute
quality number 75 Optimizer quality setting
format string undefined Optional output format sent as fm
priority boolean false When true, uses loading="eager"
placeholder `string null` null
className string '' CSS class name for the rendered image
style React.CSSProperties {} Inline styles for the rendered image

Build & test

npm install
npm run build
npm test

Peer dependencies

  • react@>=18
  • react-dom@>=18

License

MIT

统计信息

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

GitHub 信息

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

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-06-07

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固