Пакет loder
предоставляет функции для легкого чтения из файлов изображений PNG и записи им. Он функционирует очень похожим на почтенный пакет png
Саймона Урбанека, но в отличие от этого пакета, он не требует установки внешних библиотек libpng
и zlib
. Вместо этого loder
включает в себя компактную библиотеку Lode Vandevenne Lodepng, которая обеспечивает автономную функциональность PNG чтения и записи.
Пакет может быть установлен из Cran, используя стандартную команду
install.packages( " loder " )
В качестве альтернативы, последняя версия разработки может быть установлена непосредственно из GitHub, используя пакет remotes
, а именно.
# # install.packages("remotes")
remotes :: install_github( " jonclayden/loder " )
Функция readPng
используется для чтения изображений PNG. Он возвращает массив loder
с тремя измерениями, представляющими ряды, столбцы и каналы. Изображения GreyScale имеют один канал, серые/альфа -изображения имеют два изображения Red/Green/Blue (RGB) имеют три, а красные/зеленые/синие/альфа -изображения имеют четыре.
library( loder )
path <- system.file( " extdata " , " pngsuite " , " basn6a08.png " , package = " loder " )
image <- readPng( path )
dim( image )
# # [1] 32 32 4
Метаданные, включая цвет фона, соотношение сторон и размер пикселей или разрешение изображения, доступны через атрибуты, если они хранятся в файле.
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
Функция display
из пакета mmand
уважает эти атрибуты и может использоваться для просмотра изображения на графическом устройстве R.
# # install.packages("mmand")
mmand :: display( image )
Только метаданные могут быть прочитаны с использованием функции inspectPng
, которая также дает информацию о достигнутом уровне сжатия:
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
Данные изображения могут быть записаны в файл, используя функцию writePng
. Теоретический числовой диапазон интенсивности пикселей (то есть черно -белые точки) может быть установлен с использованием атрибута range
или аргумента с тем же именем.
writePng( image , tempfile(), range = c( 0 , 200 ))
Это спасет интенсивности изображения и обрезать любые значения за пределами указанного диапазона до соответствующей крайности.