搜索插件、代码仓与 APP 分类

插件详情v3.1.0

flutter_avif

一个使用 libavif 查看和编码 avif 图像的 Flutter 插件。

AndroidiOSWebmacOSWindowsLinux
近 30 天下载
9550
喜欢数
52
Pub 分数
140

安装插件

flutter pub add flutter_avif

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

flutter_avif 是一个 Flutter 插件,使用 libavif 库实现 AVIF 图像的查看和编码。它支持 Android、iOS、Web、macOS、Windows 和 Linux 等多个平台。该插件使开发者能够将高效能的 AVIF 图像处理功能集成到其应用中,相比传统的 JPEG 或 PNG 格式,提供更优的压缩率和图像质量。它为 Flutter 应用中的 AVIF 文件解码和编码提供了简单直接的 API。

适合场景

  • 在Flutter应用中显示AVIF图像
  • 将图像转换为 AVIF 格式
  • 优化应用图像资源
  • 在所有平台上支持现代图像格式
  • 在媒体密集型应用中集成 AVIF

主要特点

  • 支持 AVIF 解码和编码
  • 跨平台兼容性
  • 使用 libavif 进行高效处理
  • 与 Flutter 的简单集成
  • 高压缩比,图像质量出色

适合对象

  • 需要高效图像存储的应用程序
  • 针对现代图像格式的开发者
  • 专注于性能和带宽节省的项目
  • 图像密集型应用,如画廊或社交媒体
  • 使用高级图像支持构建跨平台应用的团队

使用建议

  • AVIF 支持可能在不同平台上略有差异
  • 需要通过 libavif 的原生依赖
  • 不适用于没有 AVIF 支持的旧系统
  • 旧版Web环境中浏览器支持有限
  • 某些平台上的潜在构建复杂性

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

flutter_avif

A flutter plugin to view and encode avif images.

Installation

To add the flutter_avif to your Flutter application follow the installation instructions on pub.dev.

Usage

AvifImage widget has a similar api as Flutter Image widget.

import 'package:flutter_avif/flutter_avif.dart';

AvifImage.file(
    file,
    height: 200,
    fit: BoxFit.contain,
),

AvifImage.asset(
    "test.avif",
    height: 200,
    fit: BoxFit.contain,
),

AvifImage.network(
    "https://test.com/test.avif",
    height: 200,
    fit: BoxFit.contain,
),

For documentation on widget properties, please refer to https://api.flutter.dev/flutter/widgets/Image-class.html.

The package also provides CachedNetworkAvifImage for caching network images.

import 'package:flutter_avif/flutter_avif.dart';

CachedNetworkAvifImage(
    "https://test.com/test.avif",
    height: 200,
    fit: BoxFit.contain,
)

Encoding

To convert an image to avif:

import 'package:flutter_avif/flutter_avif.dart';

final asset = await rootBundle.load("asset.gif");
final avifBytes = await encodeAvif(asset.buffer.asUint8List());
final outputFile = File('output.avif');
outputFile.writeAsBytes(avifBytes);
import 'package:flutter_avif/flutter_avif.dart';

final inputFile = File('input.png');
final inputBytes = await inputFile.readAsBytes();
final avifBytes = await encodeAvif(inputBytes);
final outputFile = File('output.avif');
outputFile.writeAsBytes(avifBytes);

Decoding

decodeAvif function can be used to decode an avif file to a list of dart:ui Image:

import 'package:flutter_avif/flutter_avif.dart';

final bytes = await rootBundle.load('asset.avif');
final frames = await decodeAvif(bytes.buffer.asUint8List());

decodeAvif functions return a list of AvifFrameInfo which has the duration and the image of a frame.

Custom Animation Controller

AvifAnimation can be used together with an AnimationController to manipulate the playback of multiframe images.

import 'package:flutter_avif/flutter_avif.dart';

AnimationController controller = AnimationController(vsync: this);

AvifAnimation(
    controller: controller,
    image: const AssetAvifImage('multiframe.avif'),
    onLoaded: (duration, fps) {
        controller.forward(); // play the animation
    },
),

所属分类

依赖

依赖清单 10 项

  • exif^3.3.0
  • flutter_avif_android^3.1.0
  • flutter_avif_ios^3.1.0
  • flutter_avif_linux^3.1.0
  • flutter_avif_macos^3.1.0
  • flutter_avif_platform_interface^3.1.0
  • flutter_avif_web^3.1.0
  • flutter_avif_windows^3.1.0
  • flutter_cache_manager^3.4.1
  • http^1.2.2

源码仓库

使用此插件的项目