An AV1 Image (AVIF) file format plug-in for Adobe® Photoshop®

Overview

avif-format

An AV1 Image (AVIF) file format plug-in for Adobe® Photoshop®.

Single images can be loaded and saved using 8, 10 or 12 bits-per-channel, image sequences and animations are not supported.

Lossless RGB compression is supported when saving 8-bits-per-channel images, the plug-in considers all bit-depth conversions to be lossy. Photoshop edits 10-bit and 12-bit data as 16-bit which then has to be remapped to the 10-bit or 12-bit range when saving, and converting 8-bit data to 10-bit or 12-bit will cause a loss of precision.

This plug-in uses libheif with the AOM decoder and encoder.

The latest version can be downloaded from the Releases tab.

System Requirements

  • Windows 7, 8 or 10.
  • A compatible 32-bit or 64-bit host application.

Installation

  1. Close your host application.
  2. Place Av1Image.8bi in the folder that your host application searches for file format plug-ins.
  3. Restart your host application.
  4. The plug-in will now be available as the AV1 Image item in the Open and Save dialogs.

Installation in Specific Hosts

Photoshop

Photoshop CC common install folder: C:\Program Files\Common Files\Adobe\Plug-ins\CC
Version-specific install folder: C:\Program Files\Adobe\Photoshop [version]\Plug-ins

Updating

Follow the installation instructions above and allow any existing files to be replaced.

License

This project is licensed under the terms of the GNU Lesser General Public License version 3.0.
See License.md for more information.

Source code

Prerequisites

  • Visual Studio 2019
  • The dependencies in the 3rd-party folder, see the read-me in that folder for more details.

Building the plug-in

  • Open the solution in the vs folder
  • Update the post build events to copy the build output to the file formats folder of your host application
  • Build the solution
 Adobe and Photoshop are either registered trademarks or trademarks of Adobe Systems Incorporated in the United States and/or other countries.
 Windows is a registered trademark of Microsoft Corporation in the United States and other countries.   
 All other trademarks are the property of their respective owners.
Issues
  • I cannot generate a functional script to save

    I cannot generate a functional script to save

    var doc = app.activeDocument;
    
    var docName = doc.name.replace(/\.[^\.]+$/, '');
    var avifName = decodeURI(doc.path) + "/" + docName + ".avif";
    
    var idsave = charIDToTypeID("save");
        var desc60 = new ActionDescriptor();
        var idAs = charIDToTypeID("As  ");
            var desc61 = new ActionDescriptor();
            var idQlty = charIDToTypeID("Qlty");
            desc61.putInteger(idQlty, 95);
            var idavoneC = charIDToTypeID("av1C");
            var idchSu = charIDToTypeID("chSu");
            var idchStwo = charIDToTypeID("chS2");
            desc61.putEnumerated(idavoneC, idchSu, idchStwo);
            var idavoneS = charIDToTypeID("av1S");
            var idcoSp = charIDToTypeID("coSp");
            var idcsPtwo = charIDToTypeID("csP2");
            desc61.putEnumerated(idavoneS, idcoSp, idcsPtwo);
            var idavoneB = charIDToTypeID("av1B");
            var idimBd = charIDToTypeID("imBd");
            var idiBdzero = charIDToTypeID("iBd0");
            desc61.putEnumerated(idavoneB, idimBd, idiBdzero);
        var idfiveninesevenBoneEeightthreefourFoneBfourAoneEnineBFeightzerosevensixeightDAzeroDtwosevensixthree = stringIDToTypeID("597B1E83-4F1B-4A1E-9BF8-0768DA0D2763");
        desc60.putObject(idAs, idfiveninesevenBoneEeightthreefourFoneBfourAoneEnineBFeightzerosevensixeightDAzeroDtwosevensixthree, desc61);
        var idIn = charIDToTypeID("In  ");
        desc60.putPath(idIn, new File(avifName));
        var idDocI = charIDToTypeID("DocI");
        desc60.putInteger(idDocI, 182);
        var idCpy = charIDToTypeID("Cpy ");
        desc60.putBoolean(idCpy, true);
        var idLwCs = charIDToTypeID("LwCs");
        desc60.putBoolean(idLwCs, true);
    executeAction(idsave, desc60, DialogModes.NO);
    

    I think the problem lies here:

        var idfiveninesevenBoneEeightthreefourFoneBfourAoneEnineBFeightzerosevensixeightDAzeroDtwosevensixthree = stringIDToTypeID("597B1E83-4F1B-4A1E-9BF8-0768DA0D2763");
        desc60.putObject(idAs, idfiveninesevenBoneEeightthreefourFoneBfourAoneEnineBFeightzerosevensixeightDAzeroDtwosevensixthree, desc61);
    

    If I generate the script it works for that session, but if I restart Photoshop the script doesn't work anymore, it generates corrupted images.

    For example, in the case of WebP it works perfectly well.

    var documento = app.activeDocument;
    var nombre = documento.name.replace(/\.[^\.]+$/, '');
    var nombreWebP = decodeURI(documento.path) + "/" + nombre + ".webp";
    var guardar = charIDToTypeID( "save" );
        var paso1 = new ActionDescriptor();
        var como = charIDToTypeID( "As  " );
            var paso2 = new ActionDescriptor();
            var calidad = charIDToTypeID( "wrtq" );
            paso2.putInteger( calidad, 97 );
            var compresion = charIDToTypeID( "wrtc" );
            paso2.putInteger( compresion, 2 );
            var datosEXIF = charIDToTypeID( "wrte" );
            paso2.putBoolean( datosEXIF, false );
            var datosXMP = charIDToTypeID( "wrtx" );
            paso2.putBoolean( datosXMP, false );
            var datosPerfil = charIDToTypeID( "wrtp" );
            paso2.putBoolean( datosPerfil, false );
            var vistaPrevia = charIDToTypeID( "wrtl" );
            paso2.putBoolean( vistaPrevia, true );
        var identificadorGoogleWebPShop = stringIDToTypeID( "Google WebPShop" );
        paso1.putObject( como, identificadorGoogleWebPShop, paso2 );
        var en = charIDToTypeID( "In  " );
        paso1.putPath( en, new File(nombreWebP) );
    executeAction( guardar, paso1, DialogModes.NO );
    
    opened by paconaranjo 15
  • CDEF filter

    CDEF filter

    Can you disable CDEF filter? Or, for example, make a checkbox to disable it? CDEF filter strongly averages the colors of the image with strong compression and at the same time does not give a noticeable gain in quality. I think it makes no sense in the context of avif, since images do not compress as much as video, and with weak compression, there is no sense from the CDEF filter, it only harms by averaging colors.

    opened by Uch1haOb1to 10
  • Plug in is not availble

    Plug in is not availble

    When I try to use this with 2021 & 2022 CC It kicks an error on program launch.

    "One of more plug-ins are currently not available on your system. For details, see Help>System Info."

    image

    opened by komizutama 4
  • Images not strictly compliant (not following recommendations)

    Images not strictly compliant (not following recommendations)

    Not sure how serious this is. Actually probably not very serious. But images I save with plugin ain't following "recommendations" according to Firefox, when I set "AVIF compliance strictness" to "Strict" in Firefox's "Advanced settings" (about:config).

    I use these settings when saving images: image

    Firefox's level of tolerance can be set in about:config via flag image.avif.compliance_strictness:

    0: Accept images with specification violations in both recommendations ("should" language) and requirements ("shall" language), provided they can be safely or unambiguously interpreted.
    1 (default): Reject violations of requirements, but allow violations of recommendations.
    2: Strict. Reject any violations in requirements or recommendations.
    

    https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Experimental_features#avif_compliance_strictness

    In Firefox 97 the default "AVIF compliance strictness" is 1. And with this setting it shows the image. However if I change the flag to 2 (Strict), Firefox wont show my images.

    Luckily it doesn't look like Mozilla has plans to change the default to 2, but wonder what kind of recommendation is violated and if we have to do that? https://bugzilla.mozilla.org/show_bug.cgi?id=1443863#c80

    opened by StigNygaard 1
  • More multiprocessing

    More multiprocessing

    Is there any way to make it use more cores? On my 3900x it only uses about 16% of my cpu. The default Photoshop PNG exporter uses the whole CPU. So I'm hoping this can be achieved to speed up the saving.

    opened by Johnnycyan 1
Releases(v1.0.4)
Owner
Nicholas Hayes
Nicholas Hayes
QOY - The "Quite OK YCbCr420A" format for fast, lossless image compression

QOY - The "Quite OK YCbCr420A" format for fast, lossless* image compression ( * colorspace conversion to/from RGBA is lossy, if used ) Single-file MIT

Chainfire 18 May 27, 2022
PoC black/white image sequence to dumpy gif image sequence converter

PoC black/white image sequence to dumpy gif image sequence converter

null 64 Jul 28, 2022
Reading, writing, and processing images in a wide variety of file formats, using a format-agnostic API, aimed at VFX applications.

README for OpenImageIO Introduction The primary target audience for OIIO is VFX studios and developers of tools such as renderers, compositors, viewer

OpenImageIO 1.5k Aug 10, 2022
Image File Execution Options Injection

Image File Execution Options Injection Description from ATT&CK Adversaries may establish persistence and/or elevate privileges by executing malicious

anas 16 Apr 30, 2022
libspng is a C library for reading and writing PNG format files with a focus on security and ease of use.

libspng (simple png) is a C library for reading and writing Portable Network Graphics (PNG) format files with a focus on security and ease of use.

Randy 520 Aug 6, 2022
This program converts APNG animations into animated GIF format

apng2gif This project has been in disrepair for long time. Recently, there is need to change the number of loops in apng file. So I used it to modify

Ted Zyzsdy 1 Jan 20, 2022
A fast image processing library with low memory needs.

libvips : an image processing library Introduction libvips is a demand-driven, horizontally threaded image processing library. Compared to similar lib

libvips 22 Jul 26, 2022
C++ image processing and machine learning library with using of SIMD: SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX-512, VMX(Altivec) and VSX(Power7), NEON for ARM.

Introduction The Simd Library is a free open source image processing and machine learning library, designed for C and C++ programmers. It provides man

Ihar Yermalayeu 1.6k Aug 4, 2022
Video++, a C++14 high performance video and image processing library.

Video++ Video++ is a video and image processing library taking advantage of the C++14 standard to ease the writing of fast video and image processing

Matthieu Garrigues 685 Aug 6, 2022
a generic C++ library for image analysis

VIGRA Computer Vision Library Copyright 1998-2013 by Ullrich Koethe This file is part of the VIGRA computer vision library. You may use,

Ullrich Koethe 370 Aug 8, 2022
Intel® Open Image Denoise library

Intel Open Image Denoise is an open source library of high-performance, high-quality denoising filters for images rendered with ray tracing

Intel® Open Image Denoise 1.3k Aug 1, 2022
GLSL Image Processing System

GIPS: The GLSL Image Processing System An image processing application that applies filters written in the OpenGL Shading Language (GLSL). This means

Martin Fiedler 52 Jun 15, 2022
Arduino PNG image decoder library

An 'embedded-friendly' (aka Arduino) PNG image decoding library

Larry Bank 91 Jun 24, 2022
libvot - A C++11 multi-thread library for image retrieval

libvot is a fast implementation of vocabulary tree, which is an algorithm widely used in image retrieval and computer vision. It usually comprises three components to build a image retrieval system using vocabulary tree: build a k-means tree using sift descriptors from images, register images into the database, query images against the database. I

Tianwei Shen 167 Jul 16, 2022
ppl.cv is a high-performance image processing library of openPPL supporting x86 and cuda platforms.

ppl.cv is a high-performance image processing library of openPPL supporting x86 and cuda platforms.

null 331 Aug 8, 2022
Video, Image and GIF upscale/enlarge(Super-Resolution) and Video frame interpolation. Achieved with Waifu2x, SRMD, RealSR, Anime4K, RIFE, CAIN, DAIN and ACNet.

Video, Image and GIF upscale/enlarge(Super-Resolution) and Video frame interpolation. Achieved with Waifu2x, SRMD, RealSR, Anime4K, RIFE, CAIN, DAIN and ACNet.

Aaron Feng 7.3k Aug 1, 2022
pngtostl is a program that converts a PNG image into STL 3D models

pngtostl is a program that converts a PNG image into a litophane, in STL format, suitable to be printed by entry level 3D printers.

Salvatore Sanfilippo 157 Jul 27, 2022
HDRView is a simple research-oriented image viewer with an emphasis on examining and comparing high-dynamic range (HDR) images

HDRView is a simple research-oriented high-dynamic range image viewer with an emphasis on examining and comparing images, and including minimalistic tonemapping capabilities. HDRView currently supports reading EXR, PNG, TGA, BMP, HDR, JPG, GIF, PNM, PFM, and PSD images and writing EXR, HDR, PNG, TGA, PPM, PFM, and BMP images.

Wojciech Jarosz 116 Aug 6, 2022