O pacote loder
fornece funções para ler facilmente os arquivos de imagem PNG e escrever para eles. Ele funciona de uma maneira muito semelhante ao venerável pacote png
de Simon Urnek, mas, diferentemente do pacote, não requer que as bibliotecas libpng
e zlib
externas sejam instaladas. Em vez disso, loder
inclui a biblioteca Compact Lodepng da Lode Vandevenne, que fornece funcionalidade de leitura e gravação de PNG independente.
O pacote pode ser instalado a partir de cran usando o comando padrão
install.packages( " loder " )
Como alternativa, a versão de desenvolvimento mais recente pode ser instalada diretamente no GitHub usando o pacote remotes
, viz.
# # install.packages("remotes")
remotes :: install_github( " jonclayden/loder " )
A função readPng
é usada para ler imagens PNG. Ele retorna uma matriz de classe loder
com três dimensões representando linhas, colunas e canais. As imagens em escala de cinza têm um canal, as imagens cinza/alfa têm duas imagens vermelhas/verdes/azuis (RGB) têm três e imagens vermelhas/verdes/azuis/alfa têm quatro.
library( loder )
path <- system.file( " extdata " , " pngsuite " , " basn6a08.png " , package = " loder " )
image <- readPng( path )
dim( image )
# # [1] 32 32 4
Os metadados, incluindo cor de fundo, proporção e tamanho de pixel ou resolução de imagem, estão disponíveis por meio de atributos, se forem armazenados no arquivo.
path <- system.file( " extdata " , " pngsuite " , " cdfn2c08.png " , package = " loder " )
attributes(readPng( path ))
# # $dim
# # [1] 32 8 3
# #
# # $class
# # [1] "loder" "array"
# #
# # $range
# # [1] 0 255
# #
# # $asp
# # [1] 4
A função display
do pacote mmand
respeita esses atributos e pode ser usada para visualizar a imagem em um dispositivo gráfico R.
# # install.packages("mmand")
mmand :: display( image )
Somente os metadados podem ser lidos usando a função inspectPng
, que também fornece informações sobre o nível de compressão alcançado:
inspectPng( path )
# # PNG file: /opt/homebrew/lib/R/4.2/site-library/loder/extdata/pngsuite/cdfn2c08.png
# # - 32 x 8 pixels, RGB
# # - 8 bpp (uncompressed data size 768 B; file size is 404 B)
# # - Aspect ratio is 4 : 1
Os dados da imagem podem ser gravados novamente em um arquivo usando a função writePng
. A faixa numérica teórica das intensidades de pixel (ou seja, os pontos em preto e branco) pode ser definida usando o atributo range
ou um argumento com o mesmo nome.
writePng( image , tempfile(), range = c( 0 , 200 ))
Isso redimensionará as intensidades da imagem e prenderá todos os valores fora do intervalo especificado ao extremo apropriado.