Convertendo imagens PNG em imagens BMP utilizando PHP
Publicado por Antônio Vinícius Menezes Medeiros (última atualização em 07/11/2010)
[ Hits: 9.054 ]
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>';
}
}
?>
script php q desliga um pc windows
Converte para maiúsculas a primeira letra de cada palavra, resolvendo o problema de acentos
Converter String para Minúsculo
Converte uma string binaria em seu respectivo codigo ascii
Upload de fotos com banco de dados
Nenhum comentário foi encontrado.
Faça suas próprias atualizações de pacotes/programas no Void Linux e torne-se um Contribuidor
Como rodar o Folding@home no Linux
Criando um painel de controle (Dashboard) para seu servidor com o Homepage
O Abismo entre o Código e o Chão: Saltos Tecnológicos e a Exclusão Estrutural no Brasil
Instalar e Configurar a santíssima trindade (PAP) no Void Linux
Pisando no acelerador do Linux Mint: Kernel XanMod, zRAM e Ajustes de Swap
Como compilar kernel no Linux Mint
Lançamento do Brutal DOOM test 6
Consertando o erro no Brave de webgl
Solução para ter de volta as bordas e barra de títulos das janelas em zenity no Debian 13.x
Seno, Coseno, Tangente em CLIPPER (0)
Inserir uma URL num arquvo pelo Ubuntu (CLIPPER) (0)
VMWare Player não conecta na rede nem consigo intercambiar arquivos (1)









