從AVIF怎麼改成JPG

一、AVIF和JPG的區別

AVIF和JPG都是圖片格式,但AVIF一般比JPG更小。AVIF是最新的開源圖片格式,它採用了先進的壓縮技術。

然而,AVIF對於一些老舊設備來說可能無法支持,因此有些情況下需要將AVIF格式的圖片轉換為JPG格式。

二、使用在線轉換工具

如果您不想涉及到代碼,可以使用在線轉換工具來將AVIF格式的圖片轉換為JPG格式。

例如,您可以使用Squoosh在線轉換工具。該工具支持將多種圖片格式轉換為JPG,包括AVIF。

const input = document.querySelector('input[type="file"]');
const image = new Image();
const reader = new FileReader();
reader.addEventListener('load', () => {
  image.src = reader.result;
  image.decode().then(() => {
    const output = document.querySelector('.output');
    const converted = new Image();
    converted.src = canvas.toDataURL('image/jpeg');
    output.appendChild(converted);
  });
});
input.addEventListener('change', () => {
  const file = input.files[0];
  if (file) {
    reader.readAsDataURL(file);
  }
});

三、使用Python將AVIF格式的圖片轉換為JPG格式

如果您想自己編寫代碼,可以使用Python語言來將AVIF格式的圖片轉換為JPG格式。

您可以使用Pillow庫來進行圖片處理。以下是一段示例代碼:

from PIL import Image
im = Image.open("image.avif")
im.save("image.jpg", "JPEG")

四、使用Java將AVIF格式的圖片轉換為JPG格式

如果您想使用Java語言來將AVIF格式的圖片轉換為JPG格式,可以使用ImageIO庫。以下是一段示例代碼:

import javax.imageio.ImageIO;
import java.io.File;
import java.awt.image.BufferedImage;

BufferedImage image = ImageIO.read(new File("image.avif"));
ImageIO.write(image, "jpg", new File("image.jpg"));

五、使用C++將AVIF格式的圖片轉換為JPG格式

如果您想使用C++語言來將AVIF格式的圖片轉換為JPG格式,可以使用libavif和libjpeg-turbo庫。以下是一段示例代碼:

#include 
#include "avif/avif.h"
#include "turbojpeg.h"

int main() {
    // Open the AVIF file
    avifROData raw = avifRawDataCreateFromFile("image.avif");
    avifImage* avif = avifImageCreateEmpty();
    avifDecoder* decoder = avifDecoderCreate();
    avifResult result = avifDecoderRead(decoder, avif, &raw);
    avifRawDataFree(&raw);

    // Convert the AVIF image to a JPEG image
    tjhandle tj = tjInitCompress();
    unsigned char* jpegBuf = NULL;
    unsigned long jpegSize = 0;
    avifRGBImage rgbImage;
    avifRGBImageSetDefaults(&rgbImage, avif);
    rgbImage.format = AVIF_RGB_FORMAT_RGBA;
    rgbImage.depth = 8;
    size_t rgbSize = avifRGBImageCalculateStorage(&rgbImage);
    rgbImage.pixels = (uint8_t*)avifAlloc(rgbSize);
    avifRGBImageFill(&rgbImage, avif);
    tjCompress2(tj, rgbImage.pixels, rgbImage.width, 0, rgbImage.height, TJPF_RGBA, &jpegBuf, &jpegSize, TJSAMP_444, 90, TJFLAG_FASTDCT);
    avifFree(rgbImage.pixels);
    tjDestroy(tj);

    // Write the JPEG image to a file
    FILE* f = fopen("image.jpg", "wb");
    fwrite(jpegBuf, 1, jpegSize, f);
    fclose(f);
    tjFree(jpegBuf);

    // Clean up
    avifDecoderDestroy(decoder);
    avifImageDestroy(avif);

    return 0;
}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/286505.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-23 03:47
下一篇 2024-12-23 03:47

相關推薦

發表回復

登錄後才能評論