I'm wondering if there's an easy way to write PNG files from a matrix?
I've got an NxM matrix of values, z, and I want to produce an NxM
pixel PNG file. I have a function pfunc(.) that converts values to
colours.
So currently I do this:
library(rtiff)
library(rgdal)
z = matrix(runif(100),10,10)
pfunc=colorRamp(c("blue","yellow"))
tiffPath = "foo.tif"
pngPath = "foo.png"
# get the rgb colours:
rgb = pfunc(t(z)[ncol(z):1,])
# as a pixmapRGB
rgbpixmap = pixmapRGB(c(rgb[,1],rgb[,2],rgb[,3]),ncol(z),nrow(z))
# save as a tiff (require(rtiff) package)
writeTiff(rgbpixmap,tiffPath)
# now read in using rgdal and copy, since GDAL PNG driver doesn't have
a 'create' call:
xp=GDAL.open(tiffPath)
xx=copyDataset(xp,driver="PNG")
saveDataset(xx,pngPath)
GDAL.close(xx)
GDAL.close(xp)
# we don't need this:
file.remove(tiffPath)
But it seems a bit kludgy. I know its not really a 'geo' question, but
it seems that rgdal might have a better way to do this that I've not
hit on yet. Any ideas (short of system("convert foo.tif foo.png")). Or
is my solution as elegant as it can be?
Barry
_______________________________________________
R-sig-Geo mailing list
[email protected]
https://stat.ethz.ch/mailman/listinfo/r-sig-geo