[Rd] png() and image()
Hin-Tak Leung
hin-tak.leung at cimr.cam.ac.uk
Mon Jul 24 14:45:35 CEST 2006
Wolfgang Huber wrote:
> Henrik Bengtsson wrote:
>> Hi Wolfgang,
>>
>> thanks for this - I took a look the EBImage webpage
>> [http://www.ebi.ac.uk/~osklyar/projects/EBImage/] and it looks very
>> nice. Are there any plans for Windows support too? I am looking for
>> a cross-platform solution.
>>
>> Cheers
>
>
> Hi Henrik,
>
> there are very strong intentions to also make this available as a
> Windows precompiled package and/or provide installation instruction for
> Windows. Until now however, in spite of some effort, we have failed.
>
> As I understand it, a problem seems to be different dll formats of MS
> Visual C++ (in which ImageMagick is provided) and MinGW.
>
> If anyone is interested in helping with this, they could have a look at
> the source package on Bioconductor, and contact us for details.
It is probably easier to port ImageMagick to MinGW than to try to
link mingw-compiled EBImage against MSVC++ compiled imagemagick.
(Imagemagick does run under cygwin, I believe, so it is not
entirely hostile to gcc on windows).
HTL
>
> Best wishes
> Wolfgang
>
>
>
>> On 7/21/06, Wolfgang Huber <huber at ebi.ac.uk> wrote:
>>> Hi Henrik,
>>> this does not directly answer your question, but you might be able to
>>> use the function write.image in the package EBImage (Bioconductor) to
>>> write matrices into image files (e.g. PNG or JPEG), this might be more
>>> flexible and also faster than what you're trying to do.
>>> Best wishes
>>> Wolfgang
>>> ------------------------------------------------------------------
>>> Wolfgang Huber EBI/EMBL Cambridge UK http://www.ebi.ac.uk/huber
>>>
>>> Henrik Bengtsson wrote:
>>>> Hi,
>>>>
>>>> I try to create PNG images of a certain size where each pixel
>>>> intensity corresponds to exactly one probe signal in an Affymetrix
>>>> array. I try to use png() and image() with zero margins to do this.
>>>> Example:
>>>>
>>>> z <- matrix(1:15, nrow=45, ncol=30)
>>>> png("large.png", height=nrow(z), width=ncol(z), bg="red")
>>>> par(mar=c(0,0,0,0))
>>>> image(z, col=gray.colors(16), axes=FALSE)
>>>> dev.off()
>>>>
>>>> z <- matrix(1:15, nrow=5, ncol=3)
>>>> png("tiny.png", height=nrow(z), width=ncol(z), bg="red")
>>>> par(mar=c(0,0,0,0))
>>>> image(z, col=gray.colors(16), axes=FALSE)
>>>> dev.off()
>>>>
>>>> The problem is that on WinXP the very bottom row and the very right
>>>> column of pixels in red. Trying on Linux, it is only the very right
>>>> column that is red. See attached images (you might have to zoom in to
>>>> see it). I try to do this in R v2.3.1. The same effect is seen if
>>>> the jpeg() device is used.
>>>>
>>>> When rescaling, the same effect is seen (the red border effect is one
>>>> pixel wide), e.g.
>>>>
>>>> z <- matrix(1:15, nrow=45, ncol=30)
>>>> png("large5.png", height=5*nrow(z), width=5*ncol(z), bg="red")
>>>> par(mar=c(0,0,0,0))
>>>> image(z, col=gray.colors(16), axes=FALSE)
>>>> dev.off()
>>>>
>>>> I might be asking for something that is not supported, but is there a
>>>> way around this? It is a problem, because I wish to tile the images
>>>> in an HTML page.
>>>>
>>>> Thanks
>>>>
>>>> Henrik
>>>>
>
>
More information about the R-devel
mailing list