Resizing Image in R

Resizing image in R

You can easily accomplish this with the help of the Bioconductor package EBImage, an image processing and analysis toolbox for R. To install the package use:

source("http://bioconductor.org/biocLite.R")
biocLite("EBImage")

You can then use the functionality provided by EBImage to load and scale the image, as in the following example.

library("EBImage")

x <- readImage(system.file("images", "sample-color.png", package="EBImage"))

# width and height of the original image
dim(x)[1:2]

# scale to a specific width and height
y <- resize(x, w = 200, h = 100)

# scale by 50%; the height is determined automatically so that
# the aspect ratio is preserved
y <- resize(x, dim(x)[1]/2)

# show the scaled image
display(y)

# extract the pixel array
z <- imageData(y)

# or
z <- as.array(y)

For more examples on the functionality provided by EBImage see the the package vignette .

how to change the dimensions of a jpg image in R?

Documentation indicates that magick's scaling functions are based on pixels. Scaling based on X and Y dimensions expressed as pixels is shown below.

I'm not sure if this directly addresses the issue because the units in the question seem to change and dots per inch (dpi) is not defined. 1219,20 x 914,40 is in mm, but the units for 78.36 x 51.00 are undefined. The first pair of numbers has an aspect ratio of 1.3 while the second is 1.5.

Scaling by X or Y in pixels will retain the original aspect ratio. Getting the right size involves knowing the desired dpi.

install.packages("magic")
library(magick)
Image <- image_read("https://i.stack.imgur.com/42fvN.png")
print(Image)

Sample Image

# Increase 300 in X dimension
Image_300x <- image_scale(Image, "300")
print(Image_300x)

Sample Image

# Increase 300 in y
Image_300y <- image_scale(Image, "x300")
print(Image_300y)

Sample Image

How to set size for local image using knitr for markdown?

You can also read the image using png package for example and plot it like a regular plot using grid.raster from the grid package.

```{r fig.width=1, fig.height=10,echo=FALSE}
library(png)
library(grid)
img <- readPNG("path/to/your/image")
grid.raster(img)
```

With this method you have full control of the size of you image.

How do I resize an image on markdown?

Another option is to use knitr::include_graphics() and adjust the size using the chunk option out.width. The dpi setting would also change the size of the image in html output. See here for more details on the chunk options.

```{r, out.width = '250px'}
knitr::include_graphics('imageFile.png')
```

You can also set these options globally if you want to with this code at the top of the script.

knitr::opts_chunk$set(out.width="250px")

magick image resize

Reading the original documentation here brings the solution:

image_scale(shoe,"382x509!")
# format width height colorspace filesize
#1 JPEG 382 509 sRGB 0

add and resize a local image to a .Rmd file in RStudio that will produce a pdf

From @tmpname12345

You can use raw latex to include a figure in pdf_output: \includegraphics[width=250pt]{path/file.png}

Changing image size in Markdown

You could just use some HTML in your Markdown:

<img src="drawing.jpg" alt="drawing" width="200"/>

Or via style attribute (not supported by GitHub)

<img src="drawing.jpg" alt="drawing" style="width:200px;"/>

Or you could use a custom CSS file as described in this answer on Markdown and image alignment

![drawing](drawing.jpg)

CSS in another file:

img[alt=drawing] { width: 200px; }


Related Topics



Leave a reply



Submit