imwrite
Write image to graphics file
Description
imwrite(
writes
image data A
,filename
)A
to the file specified by filename
,
inferring the file format from the extension. imwrite
creates the new
file in your current folder. The bit depth of the output image depends on the data type of
A
and the file format. For most formats:
If
A
is of data typeuint8
, thenimwrite
outputs 8-bit values.If
A
is of data typeuint16
and the output file format supports 16-bit data (JPEG, PNG, and TIFF), thenimwrite
outputs 16-bit values. If the output file format does not support 16-bit data, thenimwrite
returns an error.If
A
is a grayscale or RGB color image of data typedouble
orsingle
, thenimwrite
assumes that the dynamic range is [0, 1] and automatically scales the data by 255 before writing it to the file as 8-bit values. If the data inA
issingle
, convertA
todouble
before writing to a GIF or TIFF file.If
A
is of data typelogical
, thenimwrite
assumes that the data is a binary image and writes it to the file with a bit depth of 1, if the format allows it. BMP, PNG, or TIFF formats accept binary images as input arrays.
If A
contains indexed image data, you should additionally specify the
map
input argument.
imwrite(
writes the indexed image in A
,map
,filename
)A
and its associated colormap
map
to the file specified by filename
.
If
A
is an indexed image of data typedouble
orsingle
, thenimwrite
converts the indices to zero-based indices by subtracting 1 from each element, and then writes the data asuint8
. If the data inA
issingle
, convertA
todouble
before writing to a GIF or TIFF file.
imwrite(___,
specifies additional parameters for output GIF, HDF, JPEG, PBM, PGM, PNG, PPM, and TIFF
files, using one or more name-value arguments. For example, you can add a comment to an
image in PNG format.Name,Value
)
Examples
Write Grayscale Image to PNG
Write a 50-by-50 array of grayscale values to a PNG file in the current folder.
A = rand(50);
imwrite(A,"myGray.png")
Write Indexed Image Data to PNG
Write an indexed image array and its associated colormap to a PNG file.
Load sample image data from the file earth.mat
.
load earth.mat
The image array X
and its associated colormap map
are loaded into the workspace.
Write the data to a new PNG file.
imwrite(X,map,"myearth.png")
imwrite
creates the file myearth.png
in your current folder.
View the new PNG file using imshow
.
imshow("myearth.png")
Write Indexed Image with MATLAB Colormap
Write image data to a new PNG file with the built-in MATLAB® colormap copper
.
Load sample image data from the file earth.mat
.
load earth.mat
The image array X
and its associated colormap map
are loaded into the workspace. map
is a matrix of 64 RGB vectors.
Create a copper-tone colormap with 64 RGB vectors. Then write the image data to a PNG file using the new colormap.
newmap = copper(64);
imwrite(X,newmap,"copperearth.png");
imwrite
creates the file copperearth.png
in your current folder.
View the new PNG file using imshow
.
imshow("copperearth.png")
Write Truecolor Image to JPEG
Create and write truecolor image data to a JPEG file.
Create a 49-by-49-by-3 array of random RGB values.
A = rand(49,49,3);
Write the image data to a JPEG file. imwrite
automatically chooses this format when you use the .jpg
file extension. Add a comment to the file using the Comment
name-value argument.
imwrite(A,"newImage.jpg","Comment","My JPEG file")
View information about the new file.
info = imfinfo("newImage.jpg");
info.ColorType
ans = 'truecolor'
[info.Height,info.Width,info.NumberOfSamples,info.BitDepth]
ans = 1×4
49 49 3 24
info.Comment
ans = 1x1 cell array
{'My JPEG file'}
Write Multiple Images to TIFF File
Write multiple images to a single multipage TIFF file.
Create two sets of random image data, im1
and im2
.
im1 = rand(50,40,3); im2 = rand(50,50,3);
Write the first image to a new TIFF file. Then, append the second image to the same file.
imwrite(im1,"myMultipageFile.tiff") imwrite(im2,"myMultipageFile.tiff","WriteMode","append")
Write Animated GIF
Draw a series of plots, capture them as images, and write them into one animated GIF file.
Plot for .
x = 0:0.01:1; n = 3; y = x.^n; plot(x,y,LineWidth=3) title("$y = x^n$, $n = $" + num2str(n),Interpreter="latex")
Capture a series of plots for increasing values of .
n = 1:0.5:5; nImages = length(n); fig = figure; for idx = 1:nImages y = x.^n(idx); plot(x,y,LineWidth=3) title("$y = x^n$, $n = $" + num2str(n(idx)),Interpreter="latex") drawnow frame = getframe(fig); im{idx} = frame2im(frame); end close;
Display the series of images in one figure.
figure; for idx = 1:nImages subplot(3,3,idx) imshow(im{idx}); end
Save the nine images into a GIF file. Because three-dimensional data is not supported for GIF files, call rgb2ind
to convert the RGB data in the image to an indexed image A
with a colormap map
. To append multiple images to the first image, call imwrite
with the name-value argument WriteMode
set to "append"
.
filename = "testAnimated.gif"; % Specify the output file name for idx = 1:nImages [A,map] = rgb2ind(im{idx},256); if idx == 1 imwrite(A,map,filename,"gif",LoopCount=Inf, ... DelayTime=1) else imwrite(A,map,filename,"gif",WriteMode="append", ... DelayTime=1) end end
imwrite
writes the GIF file to your current folder. Setting LoopCount
to Inf
causes the animation to loop continuously. Setting DelayTime
to 1
specifies a 1-second delay between the display of each image in the animation.
Input Arguments
A
— Image data
matrix
Image data, specified as a full (nonsparse) matrix.
For grayscale images,
A
can be m-by-n.For indexed images,
A
can be m-by-n. Specify the associated colormap in themap
input argument.For truecolor images,
A
must be m-by-n-by-3.imwrite
does not support writing RGB images to GIF files.
For TIFF files, A
can be an
m-by-n-by-4 array containing color data that
uses the CMYK color space.
For multiframe GIF files, A
can be an
m-by-n-by-1-by-p array
containing grayscale or indexed images, where p is the number of
frames to write. RGB images are not supported in this case.
Data Types: double
| single
| uint8
| uint16
| logical
filename
— Name of output file
string scalar | character vector
Name of the output file, specified as a string scalar or character vector.
Depending on the location you are writing to, filename
can take
on one of these forms.
Location | Form | ||||||||
---|---|---|---|---|---|---|---|---|---|
Current folder | To write to the current folder, specify the name of the file in
Example:
| ||||||||
Other folders | To write to a folder different from the current folder, specify the
full or relative path name in
Example:
Example:
| ||||||||
Remote Location | To write to a remote location,
Based on the remote location,
For more information, see Work with Remote Data. Example:
|
Data Types: char
| string
map
— Colormap of indexed image
m-by-3 array
Colormap associated with indexed image data in A
, specified as an
m-by-3 array. map
must be a valid MATLAB® colormap. See colormap
for a list of built-in
MATLAB colormaps. Most image file formats do not support colormaps with more than
256 entries.
Example: [0,0,0; 0.5,0.5,0.5; 1,1,1]
Example: jet(60)
Data Types: double
fmt
— Format of output file
"bmp"
| "gif"
| "hdf"
| "jpg"
| "jp2"
| ...
Format of the output file, specified as one of the formats in this table.
This table also summarizes the types of images
that imwrite
can write. The MATLAB file
format registry determines which file formats are supported. See imformats
for more information about
this registry.
For certain formats, imwrite
can accept additional name-value arguments.
To view these arguments, click the linked format names below.
Value of | Format of Output File | Description |
---|---|---|
| Windows® Bitmap (BMP) | 1-bit, 8-bit, and 24-bit uncompressed images |
| 8-bit images | |
| 8-bit raster image data sets with or without associated colormap, 24-bit raster image data sets | |
| 8-bit, 12-bit, and 16-bit Baseline JPEG images Note
| |
| 1-bit, 8-bit, and 16-bit JPEG 2000 images | |
| Any 1-bit PBM image, ASCII (plain) or raw (binary) encoding | |
| Windows Paintbrush (PCX) | 8-bit images |
| Any standard PGM image; ASCII (plain) encoded with arbitrary color depth; raw (binary) encoded with up to 16 bits per gray value | |
| 1-bit, 2-bit, 4-bit, 8-bit, and 16-bit grayscale images; 8-bit and 16-bit grayscale images with alpha channels; 1-bit, 2-bit, 4-bit, and 8-bit indexed images; 24-bit and 48-bit truecolor images; 24-bit and 48-bit truecolor images with alpha channels
Note The
| |
| Any of the PPM/PGM/PBM formats, chosen automatically | |
| Any standard PPM image: ASCII (plain) encoded with arbitrary color depth or raw (binary) encoded with up to 16 bits per color component | |
| Sun® Raster (RAS) | Any RAS image, including 1-bit bitmap, 8-bit indexed, 24-bit truecolor, and 32-bit truecolor with alpha |
| Baseline TIFF images, including:
| |
| X Windows Dump (XWD) | 8-bit ZPixmaps |
Name-Value Arguments
Specify optional pairs of arguments as
Name1=Value1,...,NameN=ValueN
, where Name
is
the argument name and Value
is the corresponding value.
Name-value arguments must appear after other arguments, but the order of the
pairs does not matter.
Example: imwrite(A,"myFile.png",BitDepth=8)
writes the data in
A
using 8 bits to represent each pixel.
Before R2021a, use commas to separate each name and value, and enclose
Name
in quotes.
Example: imwrite(A,"myFile.png","BitDepth",8)
writes the data in
A
using 8 bits to represent each pixel.
BackgroundColor
— Color to use as background color
nonnegative integer scalar
Color to use as background color for the indexed image, specified as a nonnegative integer scalar corresponding to the colormap index.
The background color is used for some disposal methods in animated GIFs.
If image data
A
isuint8
orlogical
, then the colormap index is zero-based.If image data
A
isdouble
, then the colormap index is one-based.
The default background color corresponds to the first color in the colormap.
Example: "BackgroundColor",15
Comment
— Comment to add to image
string scalar | character vector | string array | cell array of character vectors
Comment to add to the image, specified as a string scalar, a character vector, a
1-by-n string array, or a 1-by-n cell array of
character vectors. For a string array or cell array of character vectors,
imwrite
adds a carriage return after each entry.
Example: "Comment",["Sample #314","January 5,
2013"]
Data Types: string
| char
| cell
DelayTime
— Delay before displaying next image
0.5 (default) | scalar value in the range [0, 655]
Delay before displaying next image, in seconds, specified as a scalar value in the range [0, 655].
Tip
To achieve a high animation rate, set DelayTime
to
0.02
. Setting DelayTime
to a lower value
will slow down the actual animation rate in many image viewers and web
browsers.
Example: "DelayTime",60
DisposalMethod
— Disposal method of animated GIF
"doNotSpecify"
(default) | "leaveInPlace"
| "restoreBG"
| "restorePrevious"
Disposal method of an animated GIF, specified as one of the methods in this table.
Value of DisposalMethod
| Result |
---|---|
"doNotSpecify" (default) | Replace one full-size, nontransparent frame with another. |
"leaveInPlace" | Any pixels not covered up by the next frame continue to display. |
"restoreBG" | The background color or background tile shows through transparent pixels. |
"restorePrevious" | Restore to the state of a previous, undisposed frame. |
Example: "DisposalMethod","restoreBG"
Location
— Offset of screen relative to image
[0,0]
(default) | two-element vector
Offset of the screen relative to the image, measured from the top-left corner of each, specified as a two-element vector. The first vector element specifies the offset from the top, and the second element specifies the offset from the left, in pixels.
Example: "Location",[10,15]
Data Types: double
LoopCount
— Number of times to repeat animation
0
(default) | integer in the range [0, 65,535] | Inf
Number of times to repeat the animation, specified as either an integer in the
range [0, 65,535] or the value Inf
. If you specify the value
0
, the animation plays once; if you specify the value
1
, the animation plays twice, and so on. A
LoopCount
value of Inf
causes the animation to
loop continuously.
To enable animation within Microsoft®
PowerPoint®, specify a value for LoopCount
within the range [1,
65,535]. Some Microsoft applications interpret the value 0 to mean not to loop at all.
Example: "LoopCount",3
ScreenSize
— Height and width of frame
height and width of input image (default) | two-element vector
Height and width of the frame, specified as a two-element vector. You can use
ScreenSize
argument with Location
to write
frames to the image that are smaller than the whole frame.
DisposalMethod
determines the fill value for pixels outside the
frame.
Example: "ScreenSize",[1000 1060]
Data Types: double
TransparentColor
— Color to use as transparent color
nonnegative integer scalar
Color to use as transparent color for the image, specified as a nonnegative integer scalar corresponding to the colormap index.
If image data
A
isuint8
orlogical
, then indexing begins at 0.If image data
A
isdouble
, then indexing begins at 1.
Example: "TransparentColor",20
WriteMode
— Writing mode
"overwrite"
(default) | "append"
Writing mode, specified as "overwrite"
or
"append"
. In "overwrite"
mode,
imwrite
overwrites an existing file,
filename
. In "append"
mode,
imwrite
adds a single frame to the existing file.
Example: "WriteMode","append"
Compression
— Compression scheme
"none"
(default) | "jpeg"
| "rle"
Compression scheme, specified as one of the options in this table.
Value of Compression
| Result |
---|---|
"none" (default) | No compression |
"jpeg" | JPEG compression. Valid only for grayscale and RGB images. |
"rle" | Run-length encoding. Valid only for grayscale and indexed images. |
Example: "Compression","jpeg"
Quality
— Quality of JPEG-compressed file
75 (default) | scalar in the range [0, 100]
Quality of the JPEG-compressed file, specified as a scalar in the range [0, 100],
where 0 is lower quality and higher compression, and 100 is higher quality and lower
compression. This parameter applies only if Compression
is
"jpeg"
.
Example: "Quality",25
WriteMode
— Writing mode
"overwrite"
(default) | "append"
Writing mode, specified as "overwrite"
or
"append"
. In "overwrite"
mode,
imwrite
overwrites an existing file,
filename
. In "append"
mode,
imwrite
adds a single frame to the existing file.
Example: "WriteMode","append"
BitDepth
— Number of bits per pixel
8
(default) | 12
| 16
Number of bits per pixel, specified as a scalar.
For grayscale images, the
BitDepth
value can be8
,12
, or16
. The default value is8
. For 16-bit images, theMode
name-value argument must be"lossless"
.For color images, the
BitDepth
value is the number of bits per plane, and can be8
or12
. The default is 8 bits per plane.
Example: "BitDepth",12
Comment
— Comment to add to image
string scalar | character vector | string array | cell array of character vectors
Comment to add to the image, specified as a string scalar, a character vector, an
n-by-1 string array, or an n-by-1 cell array
of character vectors. For a string array or cell array of character vectors,
imwrite
writes each row of input as a comment in the JPEG
file.
Example: "Comment",["First comment";"second comment";"third
comment"]
Data Types: string
| char
| cell
Mode
— Type of compression
"lossy"
(default) | "lossless"
Type of compression, specified as "lossy"
or
"lossless"
.
Example: "Mode","lossless"
Quality
— Quality of output file
75 (default) | scalar in the range [0, 100]
Quality of the output file, specified as a scalar in the range [0, 100], where 0
is lower quality and higher compression, and 100 is higher quality and lower
compression. A Quality
value of 100 does not write a lossless JPEG
image. Instead, set the Mode
name-value argument to
"lossless"
.
Example: "Quality",100
Comment
— Comment to add to image
string scalar | character vector | string array | cell array of character vectors
Comment to add to the image, specified as a string scalar, a character vector, a
string array, or a cell array of character vectors. For a string array or cell array
of character vectors, imwrite
writes each entry as a comment in
the JPEG 2000 file, in column-major order.
Example: "Comment",["First comment";"second comment";"third
comment"]
Example: "Comment",{'First comment','second comment','third
comment'}
Data Types: string
| char
| cell
CompressionRatio
— Target compression ratio
1 (default) | positive scalar
Target compression ratio, specified as a positive scalar greater than or equal to 1. The compression ratio is the ratio of the input image size to the output compressed size. For example, a value of 2 implies that the output image size is half of the input image size or less. A higher value implies a smaller file size and more reduced image quality. The compression ratio does not take into account the header size.
Specifying CompressionRatio
is valid only when
Mode
is "lossy"
.
Example: "CompressionRatio",3
Mode
— Type of compression
"lossy"
(default) | "lossless"
Type of compression, specified as "lossy"
or
"lossless"
.
Example: "Mode","lossless"
ProgressionOrder
— Order of packets in code stream
"LRCP"
(default) | "RLCP"
| "RPCL"
| "PCRL"
| "CPRL"
Order of packets in the code stream, specified as one of these options:
"LRCP"
"RLCP"
"RPCL"
"PCRL"
"CPRL"
The characters represent these packets: L
= layer,
R
= resolution, C
= component, and
P
= position.
Example: "ProgressionOrder","RLCP"
QualityLayers
— Number of quality layers
1 (default) | integer in the range [1, 20]
Number of quality layers, specified as an integer in the range [1, 20].
Example: "QualityLayers",8
ReductionLevels
— Number of reduction levels
4 (default) | integer in the range [1, 8]
Number of reduction levels, or wavelet decomposition levels, specified as an integer in the range [1, 8].
Example: "ReductionLevels",6
TileSize
— Tile height and width
image size (default) | two-element vector
Tile height and width, specified as a two-element vector. The minimum size you can
specify is [128 128]
.
Example: "TileSize",[130 130]
Encoding
— Encoding
"rawbits"
(default) | "ASCII"
Encoding, specified as "rawbits"
for binary encoding or
"ASCII"
for plain encoding.
Example: "Encoding","ASCII"
MaxValue
— Maximum gray or color value
positive integer scalar
Maximum gray or color value, specified as a positive integer scalar.
Specify this name-value argument only for PGM and PPM files. For PBM files, this
value is always 1
.
If the image array is uint16
, then the default value for
MaxValue
is 65535
. Otherwise, the default
value is 255
.
Example: "MaxValue",510
Alpha
— Transparency of each pixel
matrix of values in the range [0, 1]
Transparency of each pixel, specified as a matrix of values in the range [0, 1].
The row and column dimensions of the Alpha
matrix must be the same
as those of the image data array. You can specify Alpha
only for
grayscale (m-by-n) and truecolor
(m-by-n-by-3) image data.
Note
You cannot specify both Alpha
and
Transparency
at the same time.
Data Types: double
| uint8
| uint16
Author
— Author information
string scalar | character vector
Author information, specified as a string scalar or character vector.
Example: "Author","Ann Smith"
Data Types: string
| char
Background
— Background color when compositing transparent pixels
scalar in the range [0, 1] | integer in the range [1, P] | three-element vector in the range [0, 1]
Background color when compositing transparent pixels, specified as a value dependent on the image data, as shown in this table.
Image Type | Form of Background Value |
---|---|
Grayscale image | Scalar in the range [0, 1]. |
Indexed image | Integer in the range [1, P], where
P is the colormap length. For example,
"Background",50 sets the background color to the color
specified by the 50th index in the colormap. |
Truecolor image | Three-element vector of RGB intensities in the range [0, 1]. For example,
"Background",[0 1 1] sets the background color to
cyan. |
Data Types: double
BitDepth
— Number of bits per pixel
1
| 2
| 4
| 8
| 16
Number of bits per pixel, specified as a scalar. Depending on the output image, the scalar can be one of these values.
Image Type | Allowed Values for BitDepth |
---|---|
Grayscale image | 1 , 2 , 4 ,
8 , or 16 |
Grayscale image with an alpha channel | 8 or 16 |
Indexed image | 1 , 2 , 4 , or
8 |
Truecolor image | 8 or 16 |
If the image is of type
double
oruint8
, then the default bit depth is 8 bits per pixel.If the image is of type
uint16
, then the default is 16 bits per pixel.If the image is of type
logical
, then the default is 1 bit per pixel.
Example: "BitDepth",4
Chromaticities
— Reference white point and primary chromaticities
eight-element vector
Reference white point and primary chromaticities, specified as an eight-element
vector of the form [wx wy rx ry gx gy bx by]
. The elements
wx
and wy
are the chromaticity coordinates of
the white point, and the elements rx
, ry
,
gx
, gy
, bx
, and
by
are the chromaticity coordinates of red, green, and blue,
respectively.
If you specify Chromaticities
, you should also specify the
Gamma
name-value argument.
Example: "Chromaticities",[0.312,0.329,0.002,0.002,0.001,0.001,0.115,0.312]
Data Types: double
Comment
— Comment to add to image
string scalar | character vector
Comment to add to the image, specified as a string scalar or character vector.
Copyright
— Copyright notice
string scalar | character vector
Copyright notice, specified as a string scalar or character vector.
CreationTime
— Time of original image creation
datetime | string scalar | character vector
Time of original image creation, specified as either a datetime, or a string
scalar or character vector that represents a point in time. If you specify
CreationTime
as a datetime
value with a time
zone, then imwrite
stores the time zone as part of the
value.
Example: "CreationTime",datetime("1955-11-12 10:04
PM","TimeZone","America/Los_Angeles")
Description
— Description of image
string scalar | character vector
Description of the image, specified as a string scalar or character vector.
Disclaimer
— Legal disclaimer
string scalar | character vector
Legal disclaimer, specified as a string scalar or character vector.
Gamma
— File gamma
numeric scalar
File gamma, specified as a numeric scalar.
Example: "Gamma",2.2
ImageModTime
— Time of last image modification
datetime | string scalar | character vector
Time of last image modification, specified as either a datetime, or a string
scalar or character vector that represents a point in time. If you specify
ImageModTime
as a datetime
value with a time
zone other than UTC, then imwrite
converts the value to UTC
before storing it. If you specify ImageModTime
as a
datetime
value without a time zone, then
imwrite
interprets the value as UTC.
The default ImageModTime
value is the time when you call
imwrite
.
Example: "ImageModTime",datetime("2018-04-01 9:00
AM","TimeZone","Europe/Rome")
InterlaceType
— Interlacing scheme
"none"
(default) | "adam7"
Interlacing scheme, specified as "none"
for no interlacing or
"adam7"
to use the Adam7 algorithm.
Example: "InterlaceType","adam7"
ResolutionUnit
— Unit for image resolution
"unknown"
(default) | "meter"
Unit for image resolution, specified as "unknown"
or
"meter"
. If you specify ResolutionUnit
, you
must include at least one of the XResolution
and
YResolution
name-value arguments. When the value of
ResolutionUnit
is "meter"
, the
XResolution
and YResolution
values are
interpreted as pixels per meter.
Example: "ResolutionUnit","meter","XResolution",1000
SignificantBits
— Number of bits to regard as significant
[]
(default) | positive integer scalar | positive integer vector
Number of bits in the data array to regard as significant, specified as a scalar
or a vector in the range [1, BitDepth
]. Depending on the output
image type, the value must be in the following form.
Image Type | Form of SignificantBits Value |
---|---|
Grayscale image without an alpha channel | Scalar |
Grayscale image with an alpha channel | 2-element vector |
Indexed image | 3-element vector |
Truecolor image without an alpha channel | 3-element vector |
Truecolor image with an alpha channel | 4-element vector |
Example: "SignificantBits",[2,3]
Software
— Software used to create the image
string scalar | character vector
Software used to create the image, specified as a string scalar or character vector.
Source
— Device used to create the image
string scalar | character vector
Device used to create the image, specified as a string scalar or character vector.
Transparency
— Pixels to consider transparent
[]
(default) | scalar in the range [0, 1] | vector
Pixels to consider transparent when no alpha channel is used, specified as a scalar or vector. Depending on the output image, the value must be in the following form.
Image Type | Form of Transparency Value |
---|---|
Grayscale image | Scalar in the range [0, 1], indicating the grayscale color to be considered transparent. |
Indexed image | Q-element vector of values in the range [0, 1], where
Q is no larger than the colormap length and each value
indicates the transparency associated with the corresponding colormap entry.
In most cases, Q is 1 . |
Truecolor image | Three-element vector of RGB intensities in the range [0, 1], indicating the truecolor color to consider transparent. |
Note
You cannot specify both Transparency
and
Alpha
at the same time.
Example: "Transparency",[1 1 1]
Data Types: double
Warning
— Warning of nature of content
string scalar | character vector
Warning of nature of content, specified as a string scalar or character vector.
XResolution
— Image resolution in horizontal direction
numeric scalar
Image resolution in the horizontal direction, in pixels/unit, specified as a
numeric scalar. Define the unit by specifying the ResolutionUnit
name-value argument.
If you do not also specify YResolution
, then the
XResolution
value applies to both the horizontal and vertical
directions.
Example: "XResolution",900
YResolution
— Image resolution in vertical direction
numeric scalar
Image resolution in the vertical direction, in pixels/unit, specified as a numeric
scalar. Define the unit by specifying the ResolutionUnit
name-value
argument.
If you do not also specify XResolution
, then the
YResolution
value applies to both the vertical and horizontal
directions.
Example: "YResolution",900
In addition to the listed name-value arguments for PNG, you can use any parameter name that satisfies the PNG specification for keywords. That is, the name uses only printable characters, contains 80 or fewer characters, and does not contain leading or trailing spaces. The value corresponding to these user-specified names must be a string scalar or character vector that contains no control characters other than linefeeds.
Alpha
— Transparency of each pixel
[]
(default) | matrix
Transparency of each pixel, specified as a matrix with row and column dimensions the same as those of the image data array.
This name-value argument is valid only for truecolor (m-by-n-by-3) image data.
Data Types: double
| single
| uint8
| uint16
Type
— Image type
"standard"
(default) | "rgb"
| "rle"
Image type, specified as one of the options in this table.
Value of Type | Description |
---|---|
"standard" (default) | Uncompressed, B-G-R color order for truecolor images |
"rgb" | Uncompressed, R-G-B color order for truecolor images |
"rle" | Run-length encoding of 1-bit and 8-bit images |
Example: "Type","rgb"
ColorSpace
— Color space representing color data
"rgb"
(default) | "cielab"
| "icclab"
Color space representing the color data, specified as "rgb"
,
"cielab"
, or "icclab"
.
This name-value argument is valid only when the image data array,
A
, is truecolor
(m-by-n-by-3). To use the CMYK color space in a
TIFF file, do not use the ColorSpace
name-value argument. Instead,
specify an m-by-n-by-4 image data array.
imwrite
can write color image data that uses the
L*a*b* color space to TIFF files. The 1976 CIE
L*a*b* specification defines numeric values that represent
luminance (L*) and chrominance (a* and
b*) information. To store L*a*b* color
data in a TIFF file, the values must be encoded to fit into either 8-bit or 16-bit
storage. imwrite
can store L*a*b* color data
in a TIFF file using these encodings:
CIELAB encodings — 8-bit and 16-bit encodings defined by the TIFF specification
ICCLAB encodings — 8-bit and 16-bit encodings defined by the International Color Consortium
The output class and encoding used by imwrite
depends on the
class of the input image data array and the ColorSpace
value, as
shown in this table. (The 8-bit and 16-bit CIELAB encodings cannot be input arrays
because they use a mixture of signed and unsigned values and cannot be represented as
a single MATLAB array.)
Input Class and Encoding |
Value of |
Output Class and Encoding |
---|---|---|
8-bit ICCLAB Values are
integers in the range [0, 255]. L* values are
multiplied by |
|
8-bit ICCLAB |
|
8-bit CIELAB | |
16-bit ICCLAB Values
are integers in the range [0, 65,280]. L* values are
multiplied by |
|
16-bit ICCLAB |
|
16-bit CIELAB | |
Double-precision 1976 CIE L*a*b* values L* is in the
dynamic range [0, 100]. a* and b*
can take any value. Setting a* and
b* to |
|
8-bit ICCLAB |
|
8-bit CIELAB |
Example: "ColorSpace","cielab"
Compression
— Compression scheme
"packbits"
| "none"
| "lzw"
| "deflate"
| "jpeg"
| "ccitt"
| "fax3"
| "fax4"
Compression scheme, specified as one of these options:
"packbits"
(default for nonbinary images)"none"
"lzw"
"deflate"
"jpeg"
"ccitt"
(binary images only, and the default for such images)"fax3"
(binary images only)"fax4"
(binary images only)
"jpeg"
is a lossy compression scheme; other compression modes
are lossless. Also, if you specify "jpeg"
compression, you must
specify the RowsPerStrip
name-value argument and the value must be
a multiple of 8.
Example: "Compression","none"
Description
— Image description
string scalar | character vector
Image description, specified by a string scalar or character vector. This
description is the text that imfinfo
returns in the
ImageDescription
field for the output image.
Example: "Description","Sample 2A301"
Resolution
— X- and Y-resolution
72 (default) | scalar | two-element vector
X- and Y-resolution, specified as a scalar indicating both X-resolution and Y-resolution, or a two-element vector containing the X-resolution and the Y-resolution.
Example: "Resolution",80
Example: "Resolution",[320,72]
Data Types: double
RowsPerStrip
— Number of rows to include in each strip
positive integer scalar
Number of rows to include in each strip, specified as a scalar. The default value is such that each strip is about 8 kilobytes.
You must specify RowsPerStrip
if you specify
"jpeg"
compression. In this case, the value must be a multiple of
8.
Example: "RowsPerStrip",16
Data Types: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
WriteMode
— Writing mode
"overwrite"
(default) | "append"
Writing mode, specified as "overwrite"
or
"append"
. In "overwrite"
mode,
imwrite
overwrites an existing file. In
"append"
mode, imwrite
adds a page to the
existing file.
Example: "WriteMode","append"
Extended Capabilities
Thread-Based Environment
Run code in the background using MATLAB® backgroundPool
or accelerate code with Parallel Computing Toolbox™ ThreadPool
.
Usage notes and limitations:
imwrite
does not support reading Hierarchical Data Format (HDF), SVS, or TIFF files when you runimwrite
in the background usingbackgroundPool
or Parallel Computing Toolbox™Threadpool
.
For more information, see Run MATLAB Functions in Thread-Based Environment.
GPU Arrays
Accelerate code by running on a graphics processing unit (GPU) using Parallel Computing Toolbox™.
The imwrite
function
supports GPU array input with these usage notes and limitations:
This function accepts GPU arrays, but does not run on a GPU.
For more information, see Run MATLAB Functions on a GPU (Parallel Computing Toolbox).
Version History
Introduced before R2006aR2022b: Use datetime
for PNG metadata
You can use datetime
values to specify the
CreationTime
and ImageModTime
name-value
arguments.
R2021b: Support for thread-based environment
You can run imwrite
in the background using MATLAB
backgroundPool
.
R2021b: Pixel differences in JPEG 2000 images
Pixel value differences might exist between JPEG 2000 images in R2021b and previous releases of MATLAB.
R2019b: Writing of indexed PNG files that have insufficient colormap entries is not supported
When writing indexed PNG files, you must specify a colormap with enough entries to interpret the image correctly.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)