Convertendo imagens PNG em imagens BMP utilizando PHP
Publicado por Antônio Vinícius Menezes Medeiros (última atualização em 07/11/2010)
[ Hits: 8.549 ]
Homepage: https://antoniomedeiros.dev/
Queria utilizar o pacote de ícones Oxygen ( http://www.oxygen-icons.org/ ), o pacote de ícones padrão do KDE 4 ( http://dot.kde.org/2007/03/08/road-kde-4-oxygen-artwork-and-icons ), no programa que estou desenvolvendo como trabalho de conclusão de curso, mas me esbarrei em um problema: o Delphi 7 não importa arquivos PNG para os ícones dos botões.
A solução: pesquisando na Internet, desenvolvi um script em PHP para converter arquivos PNG em arquivos BMP e o utilizei para converter todos os ícones do pacote. Aqui venho mostrá-los minha invenção. As páginas que utilizei como referência aparecem nos comentários.
Obs.: Esse script também funciona com imagens PNG com transparência!
<?php /* Este script PHP converte imagens no formato PNG em imagens no formato BMP. Autor: Antônio Vinícius (http://www.vivaolinux.com.br/~viniciusecia) Para executar esse script, você precisará da classe BMP, que pode ser obtida no seguinte endereço: imagebmp + imagecreatefrombmp Download - Softpedia http://webscripts.softpedia.com/scriptDownload/imagebmp---imagecreatefrombmp-Download-58827.html Coloque o arquivo "BMP.php" na mesma pasta deste script ou altere a linha abaixo. */ include_once 'BMP.php'; function ConvertePNG($nome_do_arquivo, $apagar_original = false) { /* Descrição: função que converte a imagem no formato PNG passada como parâmetro em uma imagem no formato BMP Parâmetros: $nome_do_arquivo: caminho do arquivo PNG que deve ser convertido. $apagar_original: define se o arquivo original deve ser excluído após a criação do novo arquivo. Por padrão é falso. Valor retornado: verdadeiro ou falso, conforme a imagem tenha sido convertida ou não */ //Verifica se o arquivo fornecido como parâmetro existe if (!file_exists($nome_do_arquivo)) { return false; } //Verifica se o arquivo fornecido como parâmetro é uma imagem .png $informacoes_diretorio = pathinfo($nome_do_arquivo); if (($informacoes_diretorio['extension'] != 'png') or (is_dir($nome_do_arquivo))) { return false; } //Determina o caminho para a nova imagem $diretorio = $informacoes_diretorio['dirname']; $arquivo = $informacoes_diretorio['filename']; $caminho_nova_imagem = $diretorio.'/'.$arquivo.'.bmp'; //Apaga a nova imagem, caso já exista if (file_exists($caminho_nova_imagem)) { unlink($caminho_nova_imagem); } //Obtém as dimensões da imagem original list($largura, $altura) = getimagesize($nome_do_arquivo); //Inicia uma nova imagem $nova_imagem = imagecreatetruecolor($largura, $altura); //Define sua cor de fundo (verde) $cor_de_fundo = imagecolorallocate($nova_imagem, 128, 128, 0); imagefill($nova_imagem, 0, 0, $cor_de_fundo); //Insere a imagem original redimensionada na imagem nova $imagem_original = imagecreatefrompng($nome_do_arquivo); imagecopy($nova_imagem, $imagem_original, 0, 0, 0, 0, $largura, $altura); //Grava a nova imagem na pasta de destino @imagebmp($nova_imagem, $caminho_nova_imagem); if ($apagar_original) { unlink($nome_do_arquivo); } return true; } /* Exemplos de uso da função ConvertePNG() */ //Tenta converter o arquivo "favicon.png" sem apaga-lo $arquivo = '/opt/lampp/htdocs/favicon.png'; if (@ConvertePNG($arquivo)) { echo 'O arquivo '.$arquivo.' foi convertido com sucesso!<br>'; } else { echo 'Não foi possível converter o arquivo '.$arquivo.'. Verifique se esse arquivo existe e se é uma imagem PNG válida.<br>'; } //Tenta converter o arquivo "favicon.png" e apaga-lo após a conversão if (@ConvertePNG($arquivo, true)) { echo 'O arquivo '.$arquivo.' foi convertido com sucesso!<br>'; } else { echo 'Não foi possível converter o arquivo '.$arquivo.'. Verifique se esse arquivo existe e se é uma imagem PNG válida.<br>'; } //Tenta converter o arquivo "favicon.png". Desta vez deve dar erro, visto que ele foi excluído anteriormente if (@ConvertePNG($arquivo)) { echo 'O arquivo '.$arquivo.' foi convertido com sucesso!<br>'; } else { echo 'Não foi possível converter o arquivo '.$arquivo.'. Verifique se esse arquivo existe e se é uma imagem PNG válida.<br>'; } /* Deve ser interessante também converter todos os arquivos PNG de determinada pasta e suas subpastas. Para isso, você pode utilizar a função a seguir em conjunto com a função anterior. */ function ListarPastasArquivos($pasta = '.', $recursivamente = false) { /* Descrição: função que lista todos os arquivos e pastas de uma pasta e, opcionalmente, os arquivos e pastas de suas subpastas Parâmetros: $pasta: caminho da pasta cujos arquivos e pastas deseja-se listar. $recursivamente: define se os arquivos e pastas das subpastas também devem ser listados. Por padrão é falso. Valor retornado: um array contendo os arquivos e pastas da subpasta passada como parâmetro Adaptada de: http://www.phpbrasil.info/classes-funcoes-e-scripts/lista-recursiva-de-arquivos */ $diretorio = opendir($pasta); while ($arquivo = readdir($diretorio)) { if (($arquivo != '.') && ($arquivo != '..')) { $path = $pasta.'/'.$arquivo; $lista[] = $path; if ((is_dir($path)) and ($recursivamente)) { $subitens = ListarPastasArquivos($path, true); foreach ($subitens as $subitem) { $lista[] = $subitem; } } } } closedir($diretorio); return $lista; } /* Exemplo de conversão recursiva de arquivos PNG em arquivos BMP */ //Converte todos os arquivos PNG encontrados na pasta "/opt/lampp/htdocs", se houver $listagem = ListarPastasArquivos('/opt/lampp/htdocs', true); foreach($listagem as $arquivo){ if (@ConvertePNG($arquivo, false)) { echo 'Arquivo convertido: '.$arquivo.'<br>'; } } ?>
funcões para conversao de uma string
Formatando data de yyyy/mm/dd para dd/mm/yyyy
Nenhum comentário foi encontrado.
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Flatpak: remover runtimes não usados e pacotes
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Inkscape Atualização 1.4 [RESOLVIDO] (8)
samba4 - 4.21 utilizar phpldapadmin [RESOLVIDO] (5)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta