Conversor de Imagem para Matriz de Dados C/C++ (Usado em Arduino/OLED)
Converta imagens em matrizes de dados C e C++ no formato hexadecimal ou binário para displays OLED e projetos Arduino com este conversor online gratuito, rápido e que funciona 100% no seu navegador.
Entrada de Imagem
Ajustes de Dimensão
Processamento Monocromático
Visualização OLED Pixel-Art
Aguardando imagem para renderizar matriz...
Processando pixels...
Configuração de Código
Matriz de Dados C/C++ Estruturada
Copie e cole diretamente no seu sketch da IDE do Arduino.
// Aguardando upload ou desenho de imagem para estruturar array C/C++...
Tutoriais em vídeo de como usar esta ferramenta
O que é o Conversor de Imagem para Matriz C/C++?
O Conversor de Imagem para Matriz de Dados C/C++ é uma ferramenta indispensável para desenvolvedores de hardware, makers e entusiastas de eletrônica que trabalham com microcontroladores como Arduino, ESP8266, ESP32 e Raspberry Pi. Seu objetivo principal é traduzir uma imagem visual comum (como um logotipo, ícone ou gráfico em PNG/JPG) para um formato matemático que o código-fonte consiga interpretar: um array de bytes.
Displays monocromáticos muito populares, como o OLED SSD1306 (I2C/SPI) ou telas e-Ink, não processam arquivos de imagem tradicionais. Eles precisam receber comandos precisos sobre qual pixel deve ser aceso (1) ou apagado (0). Nossa ferramenta processa a sua imagem e gera exatamente esse mapa de bits (bitmap) binarizado, entregando o código pronto para você colar na sua IDE e utilizar com bibliotecas como Adafruit GFX ou U8g2.
Como usar o conversor passo a passo
Desenvolvemos uma interface gráfica reativa onde tudo acontece instantaneamente na sua tela. Siga estes passos para gerar o código perfeito para o seu display:
- Faça o upload da imagem: Arraste e solte o arquivo desejado na área pontilhada ou clique para selecionar. Aceitamos qualquer formato comum de imagem web. Se a imagem estiver muito pesada e quiser organizá-la antes, você pode usar nosso Otimizador de PNG para Web.
- Defina as dimensões (Resolução): Insira a largura e altura exatas do seu display ou do ícone que deseja renderizar (ex: 128x64 pixels). Utilize a opção de "Manter proporção original" para não distorcer sua imagem.
- Ajuste o processamento monocromático: Como o display exibe apenas preto e branco, utilize o controle deslizante de Limiar (Threshold) para definir o ponto de corte entre o que vira pixel aceso ou apagado. Corrija detalhes ajustando o Brilho e Contraste em tempo real, verificando o resultado na janela de "Visualização OLED".
- Configure a saída do código: Escolha o nome da variável, o formato dos bytes (Hexadecimal ou Binário) e a orientação dos pixels (Horizontal para Adafruit GFX, Vertical para U8g2).
-
Copie ou Baixe: Com o preview validado, basta clicar em "Copiar Código" ou baixar o arquivo
.hpara incluir direto no projeto do seu Arduino.
Principais Funcionalidades e Controles Avançados
- Redimensionamento Inteligente (Scaling): Escolha como a imagem vai se comportar na matriz com modos de conter com bordas pretas (Contain), preencher cortando sobras (Cover) ou esticar (Stretch).
- Inversão Rápida de Cores: Com um único clique em "Inverter Cores (Negativo)", você troca instantaneamente os pixels pretos pelos brancos e vice-versa, poupando edições externas.
- Pré-visualização Pixel-Perfect: Um canvas de renderização customizado simula exatamente como a imagem ficará no seu painel LED/OLED, permitindo notar perdas de legibilidade antes de compilar o código. Se a sua intenção for criar algo puramente artístico antes de trazer para cá, recomendamos testar antes o Transformador de Imagem em Pixel Art.
- Mapeamento Dinâmico de Matriz: O código gera tanto mapeamento por paginação horizontal (tradicional) quanto varredura de coluna vertical, garantindo 100% de compatibilidade com qualquer driver gráfico do mercado.
- Monitor de Peso (Bytes): Visualize dinamicamente quantos bytes da memória do seu microcontrolador esse array irá consumir (algo vital para chips com memória restrita como o Arduino Uno).
Privacidade e Segurança: Processamento 100% Local
Temos um compromisso rigoroso com a sua privacidade. Nenhum arquivo de imagem é enviado para nossos servidores. Todo o cálculo da matriz de bytes, redimensionamento, aplicação de limiares e geração do código C/C++ ocorre localmente usando a engine Javascript do seu próprio navegador. Além disso, você pode checar informações internas de fotos privadas de forma segura com o nosso Visualizador de Metadados EXIF, garantindo que nada saia da sua máquina antes da compilação.
FAQ - Perguntas Frequentes
Essa ferramenta serve para qualquer display OLED ou LCD?
Sim. A saída padrão gera um array de bytes que contém informações binárias genéricas (aceso ou apagado). Isso é perfeito para telas monocromáticas SSD1306, SH1106, Nokia 5110 e e-Paper (e-Ink). Dependendo da biblioteca que você usar no Arduino, basta escolher entre a exportação "Horizontal" ou "Vertical".
Qual a diferença entre Mapeamento Horizontal e Vertical?
Diferentes bibliotecas leem arrays de forma distinta. Bibliotecas baseadas na Adafruit_GFX (como a Adafruit_SSD1306) esperam que os bytes representem pixels agrupados horizontalmente, lidos da esquerda para a direita. Já a biblioteca U8g2 tradicionalmente opera por páginas (colunas de 8 pixels na vertical). Se a imagem aparecer corrompida ou como "ruído estático" na sua tela, provavelmente a orientação selecionada está invertida; tente alterar esse mapeamento e gerar o código novamente.
Minha imagem ficou muito escura ou ilegível no Preview, o que fazer?
Imagens coloridas complexas ou fotos reais perdem qualidade quando reduzidas a duas cores. Para corrigir isso, utilize a barra de Limiar de Preto/Branco para calibrar exatamente em que tom de cinza um pixel deve acender. Se necessário, aumente o Contraste da imagem ou ajuste o Brilho para forçar o destaque de silhuetas. O segredo é simplificar a imagem original o máximo possível. Se você estiver exibindo a matriz em um monitor para teste antes de passar pro Arduino, utilize o nosso Teste de Monitor (Burn-in test) para garantir calibração.
Qual a diferença entre exportar em Hexadecimal ou Binário?
Eles têm exatamente o mesmo resultado para o microcontrolador, a diferença é apenas na legibilidade humana do código. O formato Hexadecimal (ex: 0xFF) é muito mais compacto e deixa seu arquivo menor e mais organizado na IDE. O formato Binário (ex: 0b11111111) é excelente didaticamente, pois se você olhar de longe, os 1s e 0s formam o desenho da sua matriz no próprio código, mas o arquivo de texto final fica bem mais longo.
Posso converter várias imagens de uma vez para fazer animações no Arduino?
Atualmente, a ferramenta otimiza e mapeia uma imagem por vez para garantir a maior precisão no processamento individual e ajuste fino de limiar. Para fazer GIFs ou frames, processe as imagens importantes do seu sprite sheet uma a uma e agrupe os arrays resultantes no seu arquivo .h. Mas se você precisa apenas reduzir o tamanho de muitas imagens de lote antes do processo, experimente usar o nosso Minificador de Imagens em Massa (Bulk Image Compressor).