AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / coding / Perguntas / 77772356
Accepted
Lance
Lance
Asked: 2024-01-07 16:14:29 +0800 CST2024-01-07 16:14:29 +0800 CST 2024-01-07 16:14:29 +0800 CST

Como obter uma lista dos formatos de entrada e saída na API ImageMagick?

  • 772

Estou mexendo no navegador / wasm ImageMagick API e ele tem um MagickFormatmódulo aqui que se parece essencialmente com isto:

export declare enum MagickFormat {
    Unknown = "UNKNOWN",
    ThreeFr = "3FR",
    ThreeG2 = "3G2",
    ThreeGp = "3GP",
    A = "A",
    Aai = "AAI",
    Ai = "AI",
    Apng = "APNG",
    Art = "ART",
    Arw = "ARW",
    Ashlar = "ASHLAR",
    Avi = "AVI",
    Avif = "AVIF",
    Avs = "AVS",
    B = "B",
    Bayer = "BAYER",
    Bayera = "BAYERA",
    Bgr = "BGR",
    Bgra = "BGRA",
    Bgro = "BGRO",
    Bmp = "BMP",
    Bmp2 = "BMP2",
    Bmp3 = "BMP3",
    Brf = "BRF",
    C = "C",
    Cal = "CAL",
    Cals = "CALS",
    Canvas = "CANVAS",
    Caption = "CAPTION",
    Cin = "CIN",
    Cip = "CIP",
    Clip = "CLIP",
    Cmyk = "CMYK",
    Cmyka = "CMYKA",
    Cr2 = "CR2",
    Cr3 = "CR3",
    ...

Essencialmente, ele lista cerca de 260 formatos, mas não diz quais são permitidos como entrada e quais são permitidos como saída . Tentei converter um PNG para CR2, mas a API wasm falhou com:

Error: NoEncodeDelegateForThisImageFormat `CR2' @ error/constitute.c/WriteImage/1409

Eu sabia que isso iria falhar porque li em algum site aleatório que não me lembro, que CR2 é o formato camera raw da Canon, e eles só podem tomá-lo como entrada e usá-lo para gerar saídas mais simples, como JPG/PNG/etc .. Mas minha pergunta é: quais são exatamente os formatos de entrada e saída permitidos para o ImageMagick? Como posso descobrir isso? Existe uma maneira de listá-los de alguma forma com a API (que eu posso então descobrir para traduzir para a API wasm)? Idealmente, não é um exemplo de CLI, mas um exemplo de API de código-fonte, eu acho.

Todos aqueles incluídos MagickFormatsão permitidos como formatos de entrada? E apenas um subconjunto de formatos de saída? Ou onde posso encontrar quais são permitidos para quais? Ah, e relacionado, depende da entrada qual saída é permitida? (Tipo, é uma matriz do tipo "JPG pode ser convertido em X e Y, mas não em Z, mas PNG pode ser convertido em X e Z, mas não em Y", ou é mais simples do que isso?) Estou parcialmente curioso neste processo, se você tiver que criar uma lista de mapeamentos um-para-muitos para cada tipo de entrada para as saídas possíveis para essa entrada, ou se for mais genérico que isso.

Objetivo principal: descobrir quais operações posso fazer.

Também vi a supportedFormatspropriedade , mas não tenho certeza se isso resolve totalmente o meu problema.

encoding
  • 1 1 respostas
  • 24 Views

1 respostas

  • Voted
  1. Best Answer
    Mark Setchell
    2024-01-07T16:41:23+08:002024-01-07T16:41:23+08:00

    O método mais simples que conheço está no Terminal:

    identify -list format
    

    e procure rpor leitura e wgravação na segunda coluna :

    Saída

    Format  Mode  Description
    -------------------------------------------------------------------------------
       3FR  r--   Hasselblad CFV/H3D39II (0.19.5-Release)
       3G2  r--   Media Container
       3GP  r--   Media Container
         A* rw+   Raw alpha samples
       AAI* rw+   AAI Dune image
        AI  rw-   Adobe Illustrator CS2
      APNG  rw+   Animated Portable Network Graphics
       ART* rw-   PFS: 1st Publisher Clip Art
       ARW  r--   Sony Alpha Raw Image Format
       ...
       ...
    

    Você pode ir de qualquer formato para qualquer outro - obviamente, desde que a fonte de entrada seja legível e o destino de saída seja gravável. O "superformato abrangente" que pode representar tudo o que o ImageMagick conhece (por exemplo, amostras inteiras/flutuantes/complexas de 8/16/32/64 bits, transparência, dezenas de canais, dados EXIF/XMP/IPTC, atrasos GIF) é MIFF- então ele passa essencialmente por esse formato de qualquer entrada para qualquer saída.


    Da mesma forma, se você quiser saber quais "modos de composição/mesclagem" o ImageMagick suporta, você pode usar:

    identify -list compose
    

    Saída

    top
    Blend
    Blur
    Bumpmap 
    ChangeMask
    Clear
    ColorBurn
    ColorDodge
    ...
    ...
    

    O "supercomando" que diz tudo o que você poderia colocar depois identify -list, ou seja, "me dê uma lista de listas" , é:

    identify -list list
    

    Saída

    Align
    Alpha
    AutoThreshold
    Boolean
    Cache
    Channel
    Class
    CLI
    ClipPath
    Coder
    Color
    Colorspace
    Command
    ....
    ...
    

    Assim você pode obter uma lista de todos os nomes de canais disponíveis, todos os tipos de compressão, todos os espaços de cores, todas as opções de interpolação, todas as opções de gravidade, todas as opções de entrelaçamento, todos os possíveis tipos de pixels virtuais...

    • 2

relate perguntas

  • Como posso encurtar esta linha base64 em 4 caracteres?

  • Não consigo importar um txt iso-8859-1 em SAS (sessão UTF-8)

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Por que esse código Java simples e pequeno roda 30x mais rápido em todas as JVMs Graal, mas não em nenhuma JVM Oracle?

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Quando devo usar um std::inplace_vector em vez de um std::vector?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Marko Smith

    Estou tentando fazer o jogo pacman usando apenas o módulo Turtle Random e Math

    • 1 respostas
  • Martin Hope
    Aleksandr Dubinsky Por que a correspondência de padrões com o switch no InetAddress falha com 'não cobre todos os valores de entrada possíveis'? 2024-12-23 06:56:21 +0800 CST
  • Martin Hope
    Phillip Borge Por que esse código Java simples e pequeno roda 30x mais rápido em todas as JVMs Graal, mas não em nenhuma JVM Oracle? 2024-12-12 20:46:46 +0800 CST
  • Martin Hope
    Oodini Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores? 2024-12-12 06:27:11 +0800 CST
  • Martin Hope
    sleeptightAnsiC `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso? 2024-11-09 07:18:53 +0800 CST
  • Martin Hope
    The Mad Gamer Quando devo usar um std::inplace_vector em vez de um std::vector? 2024-10-29 23:01:00 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST
  • Martin Hope
    MarkB Por que o GCC gera código que executa condicionalmente uma implementação SIMD? 2024-02-17 06:17:14 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve