[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