annotate scripts/image/imread.m @ 31211:edbd725ee76c

imwrite: fixed tests to reflect alpha channel behavior for Tiff images * scripts/image/imwrite.m: modified tests to correctly handled the new behavior for alpha channel in Tiff images. * scripts/image/imread.m: added a note in the function documentation about the alpha channel behavior for Tiff images.
author magedrifaat <magedrifaat@gmail.com>
date Tue, 06 Sep 2022 21:12:29 +0200
parents 796f54d4ddbf
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
1 ########################################################################
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
2 ##
30564
796f54d4ddbf update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 30330
diff changeset
3 ## Copyright (C) 2002-2022 The Octave Project Developers
27918
b442ec6dda5c use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents: 26376
diff changeset
4 ##
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
5 ## See the file COPYRIGHT.md in the top-level directory of this
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
6 ## distribution or <https://octave.org/copyright/>.
7925
9316b59903c9 Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff changeset
7 ##
9316b59903c9 Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff changeset
8 ## This file is part of Octave.
9316b59903c9 Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff changeset
9 ##
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 23220
diff changeset
10 ## Octave is free software: you can redistribute it and/or modify it
7925
9316b59903c9 Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff changeset
11 ## under the terms of the GNU General Public License as published by
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 23220
diff changeset
12 ## the Free Software Foundation, either version 3 of the License, or
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22558
diff changeset
13 ## (at your option) any later version.
7925
9316b59903c9 Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff changeset
14 ##
9316b59903c9 Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff changeset
15 ## Octave is distributed in the hope that it will be useful, but
9316b59903c9 Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff changeset
16 ## WITHOUT ANY WARRANTY; without even the implied warranty of
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22558
diff changeset
17 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22558
diff changeset
18 ## GNU General Public License for more details.
7925
9316b59903c9 Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff changeset
19 ##
9316b59903c9 Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff changeset
20 ## You should have received a copy of the GNU General Public License
9316b59903c9 Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff changeset
21 ## along with Octave; see the file COPYING. If not, see
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 23220
diff changeset
22 ## <https://www.gnu.org/licenses/>.
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
23 ##
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
24 ########################################################################
7925
9316b59903c9 Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff changeset
25
9316b59903c9 Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff changeset
26 ## -*- texinfo -*-
20852
516bb87ea72e 2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents: 20338
diff changeset
27 ## @deftypefn {} {[@var{img}, @var{map}, @var{alpha}] =} imread (@var{filename})
516bb87ea72e 2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents: 20338
diff changeset
28 ## @deftypefnx {} {[@dots{}] =} imread (@var{url})
516bb87ea72e 2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents: 20338
diff changeset
29 ## @deftypefnx {} {[@dots{}] =} imread (@dots{}, @var{ext})
516bb87ea72e 2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents: 20338
diff changeset
30 ## @deftypefnx {} {[@dots{}] =} imread (@dots{}, @var{idx})
21742
c86cacc3aaf4 imread: Clean up function and its private implementation.
Rik <rik@octave.org>
parents: 21580
diff changeset
31 ## @deftypefnx {} {[@dots{}] =} imread (@dots{}, @var{param1}, @var{value1}, @dots{})
7925
9316b59903c9 Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff changeset
32 ## Read images from various file formats.
9316b59903c9 Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff changeset
33 ##
21742
c86cacc3aaf4 imread: Clean up function and its private implementation.
Rik <rik@octave.org>
parents: 21580
diff changeset
34 ## Read an image as a matrix from the file @var{filename} or from the online
c86cacc3aaf4 imread: Clean up function and its private implementation.
Rik <rik@octave.org>
parents: 21580
diff changeset
35 ## resource @var{url}. If neither is given, but @var{ext} was specified, look
c86cacc3aaf4 imread: Clean up function and its private implementation.
Rik <rik@octave.org>
parents: 21580
diff changeset
36 ## for a file with the extension @var{ext}.
16944
1b3b3ee88284 Add optional extension argument to image IO functions.
Carnë Draug <carandraug@octave.org>
parents: 16913
diff changeset
37 ##
20158
7503499a252b doc: Update docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19833
diff changeset
38 ## The size and class of the output depends on the format of the image. A
21742
c86cacc3aaf4 imread: Clean up function and its private implementation.
Rik <rik@octave.org>
parents: 21580
diff changeset
39 ## color image is returned as an @nospell{MxNx3} matrix. Grayscale and
c86cacc3aaf4 imread: Clean up function and its private implementation.
Rik <rik@octave.org>
parents: 21580
diff changeset
40 ## black-and-white images are of size @nospell{MxN}@. Multipage images will
20158
7503499a252b doc: Update docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19833
diff changeset
41 ## have an additional 4th dimension.
17350
ba79ba4e83ab Rewrite of imfinfo.
Carnë Draug <carandraug@octave.org>
parents: 17338
diff changeset
42 ##
20158
7503499a252b doc: Update docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19833
diff changeset
43 ## The bit depth of the image determines the class of the output:
21742
c86cacc3aaf4 imread: Clean up function and its private implementation.
Rik <rik@octave.org>
parents: 21580
diff changeset
44 ## @qcode{"uint8"}, @qcode{"uint16"}, or @qcode{"single"} for grayscale and
c86cacc3aaf4 imread: Clean up function and its private implementation.
Rik <rik@octave.org>
parents: 21580
diff changeset
45 ## color, and @qcode{"logical"} for black-and-white. Note that indexed images
c86cacc3aaf4 imread: Clean up function and its private implementation.
Rik <rik@octave.org>
parents: 21580
diff changeset
46 ## always return the indexes for a colormap, independent of whether @var{map}
c86cacc3aaf4 imread: Clean up function and its private implementation.
Rik <rik@octave.org>
parents: 21580
diff changeset
47 ## is a requested output. To obtain the actual RGB image, use @code{ind2rgb}.
c86cacc3aaf4 imread: Clean up function and its private implementation.
Rik <rik@octave.org>
parents: 21580
diff changeset
48 ## When more than one indexed image is being read, @var{map} is obtained from
c86cacc3aaf4 imread: Clean up function and its private implementation.
Rik <rik@octave.org>
parents: 21580
diff changeset
49 ## the first. In some rare cases this may be incorrect and @code{imfinfo} can
c86cacc3aaf4 imread: Clean up function and its private implementation.
Rik <rik@octave.org>
parents: 21580
diff changeset
50 ## be used to obtain the colormap of each image.
17350
ba79ba4e83ab Rewrite of imfinfo.
Carnë Draug <carandraug@octave.org>
parents: 17338
diff changeset
51 ##
31211
edbd725ee76c imwrite: fixed tests to reflect alpha channel behavior for Tiff images
magedrifaat <magedrifaat@gmail.com>
parents: 30564
diff changeset
52 ## For TIFF images, the transaprency channel is appended to the rest of the
edbd725ee76c imwrite: fixed tests to reflect alpha channel behavior for Tiff images
magedrifaat <magedrifaat@gmail.com>
parents: 30564
diff changeset
53 ## channels in @var{img}, and @var{alpha} is always empty for matlab
edbd725ee76c imwrite: fixed tests to reflect alpha channel behavior for Tiff images
magedrifaat <magedrifaat@gmail.com>
parents: 30564
diff changeset
54 ## compatibility. To differentiate between RGBA and CMYK images, check
edbd725ee76c imwrite: fixed tests to reflect alpha channel behavior for Tiff images
magedrifaat <magedrifaat@gmail.com>
parents: 30564
diff changeset
55 ## @code{ColorType} or @code{PhotometricInterpretation} fields in the output
edbd725ee76c imwrite: fixed tests to reflect alpha channel behavior for Tiff images
magedrifaat <magedrifaat@gmail.com>
parents: 30564
diff changeset
56 ## of @code{imfinfo}.
edbd725ee76c imwrite: fixed tests to reflect alpha channel behavior for Tiff images
magedrifaat <magedrifaat@gmail.com>
parents: 30564
diff changeset
57 ##
16962
fb940d48c6f7 doc: document index argument for reading multipage images.
Carnë Draug <carandraug@octave.org>
parents: 16944
diff changeset
58 ## See the Octave manual for more information in representing images.
28733
9342688e86b4 Updated property references for text and graphics functions (bug #50247)
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 27985
diff changeset
59 ## (@pxref{Representing Images})
16962
fb940d48c6f7 doc: document index argument for reading multipage images.
Carnë Draug <carandraug@octave.org>
parents: 16944
diff changeset
60 ##
20158
7503499a252b doc: Update docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19833
diff changeset
61 ## Some file formats, such as TIFF and GIF, are able to store multiple images
7503499a252b doc: Update docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19833
diff changeset
62 ## in a single file. @var{idx} can be a scalar or vector specifying the
21742
c86cacc3aaf4 imread: Clean up function and its private implementation.
Rik <rik@octave.org>
parents: 21580
diff changeset
63 ## index of the images to read. By default, Octave will read only the first
20158
7503499a252b doc: Update docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19833
diff changeset
64 ## page.
8148
213dd524f96b Improve documentation for image I/O.
sh@sh-laptop
parents: 7931
diff changeset
65 ##
20158
7503499a252b doc: Update docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19833
diff changeset
66 ## Depending on the file format, it is possible to configure the reading of
21742
c86cacc3aaf4 imread: Clean up function and its private implementation.
Rik <rik@octave.org>
parents: 21580
diff changeset
67 ## images with @var{parameter}, @var{value} pairs. The following options are
20158
7503499a252b doc: Update docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19833
diff changeset
68 ## supported:
16984
997efb8d0b19 imread: implement options Index, Frames, and Info.
Carnë Draug <carandraug@octave.org>
parents: 16967
diff changeset
69 ##
21742
c86cacc3aaf4 imread: Clean up function and its private implementation.
Rik <rik@octave.org>
parents: 21580
diff changeset
70 ## @table @asis
17281
bc924baa2c4e doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents: 17171
diff changeset
71 ## @item @qcode{"Frames"} or @qcode{"Index"}
16984
997efb8d0b19 imread: implement options Index, Frames, and Info.
Carnë Draug <carandraug@octave.org>
parents: 16967
diff changeset
72 ## This is an alternative method to specify @var{idx}. When specifying it
17281
bc924baa2c4e doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents: 17171
diff changeset
73 ## in this way, its value can also be the string @qcode{"all"}.
16984
997efb8d0b19 imread: implement options Index, Frames, and Info.
Carnë Draug <carandraug@octave.org>
parents: 16967
diff changeset
74 ##
17281
bc924baa2c4e doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents: 17171
diff changeset
75 ## @item @qcode{"Info"}
21742
c86cacc3aaf4 imread: Clean up function and its private implementation.
Rik <rik@octave.org>
parents: 21580
diff changeset
76 ## This option exists for @sc{matlab} compatibility, but has no effect. For
c86cacc3aaf4 imread: Clean up function and its private implementation.
Rik <rik@octave.org>
parents: 21580
diff changeset
77 ## maximum performance when reading multiple images from a single file, use
c86cacc3aaf4 imread: Clean up function and its private implementation.
Rik <rik@octave.org>
parents: 21580
diff changeset
78 ## the @qcode{"Index"} option.
17118
c97a26408ee0 Implement PixelRegion option for imread().
Carnë Draug <carandraug@octave.org>
parents: 17086
diff changeset
79 ##
17281
bc924baa2c4e doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents: 17171
diff changeset
80 ## @item @qcode{"PixelRegion"}
21742
c86cacc3aaf4 imread: Clean up function and its private implementation.
Rik <rik@octave.org>
parents: 21580
diff changeset
81 ## Controls the image region that is read. The value must be a cell array with
c86cacc3aaf4 imread: Clean up function and its private implementation.
Rik <rik@octave.org>
parents: 21580
diff changeset
82 ## two arrays of 3 elements @code{@{[@var{rows}], [@var{cols}]@}}. The
c86cacc3aaf4 imread: Clean up function and its private implementation.
Rik <rik@octave.org>
parents: 21580
diff changeset
83 ## elements in the array are the start, increment, and end pixel to be read.
c86cacc3aaf4 imread: Clean up function and its private implementation.
Rik <rik@octave.org>
parents: 21580
diff changeset
84 ## If the increment value is omitted it defaults to 1. For example, the
c86cacc3aaf4 imread: Clean up function and its private implementation.
Rik <rik@octave.org>
parents: 21580
diff changeset
85 ## following are all equivalent:
18615
1b6f5917ae4b imread.m: expand documentation and add tests for the PixelRegion option.
Carnë Draug <carandraug@octave.org>
parents: 18298
diff changeset
86 ##
1b6f5917ae4b imread.m: expand documentation and add tests for the PixelRegion option.
Carnë Draug <carandraug@octave.org>
parents: 18298
diff changeset
87 ## @example
1b6f5917ae4b imread.m: expand documentation and add tests for the PixelRegion option.
Carnë Draug <carandraug@octave.org>
parents: 18298
diff changeset
88 ## @group
21742
c86cacc3aaf4 imread: Clean up function and its private implementation.
Rik <rik@octave.org>
parents: 21580
diff changeset
89 ## imread (filename, "PixelRegion", @{[200 600], [300 700]@});
c86cacc3aaf4 imread: Clean up function and its private implementation.
Rik <rik@octave.org>
parents: 21580
diff changeset
90 ## imread (filename, "PixelRegion", @{[200 1 600], [300 1 700]@});
18615
1b6f5917ae4b imread.m: expand documentation and add tests for the PixelRegion option.
Carnë Draug <carandraug@octave.org>
parents: 18298
diff changeset
91 ## imread (filename)(200:600, 300:700);
1b6f5917ae4b imread.m: expand documentation and add tests for the PixelRegion option.
Carnë Draug <carandraug@octave.org>
parents: 18298
diff changeset
92 ## @end group
1b6f5917ae4b imread.m: expand documentation and add tests for the PixelRegion option.
Carnë Draug <carandraug@octave.org>
parents: 18298
diff changeset
93 ## @end example
1b6f5917ae4b imread.m: expand documentation and add tests for the PixelRegion option.
Carnë Draug <carandraug@octave.org>
parents: 18298
diff changeset
94 ##
16984
997efb8d0b19 imread: implement options Index, Frames, and Info.
Carnë Draug <carandraug@octave.org>
parents: 16967
diff changeset
95 ## @end table
997efb8d0b19 imread: implement options Index, Frames, and Info.
Carnë Draug <carandraug@octave.org>
parents: 16967
diff changeset
96 ##
16944
1b3b3ee88284 Add optional extension argument to image IO functions.
Carnë Draug <carandraug@octave.org>
parents: 16913
diff changeset
97 ## @seealso{imwrite, imfinfo, imformats}
7925
9316b59903c9 Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff changeset
98 ## @end deftypefn
9316b59903c9 Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff changeset
99
18298
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
100 function [img, varargout] = imread (filename, varargin)
21742
c86cacc3aaf4 imread: Clean up function and its private implementation.
Rik <rik@octave.org>
parents: 21580
diff changeset
101
7925
9316b59903c9 Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff changeset
102 if (nargin < 1)
7931
de26beacb20f imread.m: simplify; loadimage.m: deprecate
John W. Eaton <jwe@octave.org>
parents: 7925
diff changeset
103 print_usage ();
18298
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
104 elseif (! ischar (filename))
11472
1740012184f9 Use uppercase for variable names in error() strings to match Info documentation. Only m-files done.
Rik <octave@nomad.inbox5.com>
parents: 10791
diff changeset
105 error ("imread: FILENAME must be a string");
7925
9316b59903c9 Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff changeset
106 endif
16944
1b3b3ee88284 Add optional extension argument to image IO functions.
Carnë Draug <carandraug@octave.org>
parents: 16913
diff changeset
107
19833
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19697
diff changeset
108 [img, varargout{1:nargout-1}] = ...
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19697
diff changeset
109 imageIO ("imread", @__imread__, "read", filename, varargin{:});
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19697
diff changeset
110
7925
9316b59903c9 Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff changeset
111 endfunction
9382
ab563d2adc10 image/imread.m Test added.
Alexander Mamonov <mamonov@gmail.com>
parents: 9268
diff changeset
112
20991
3ec8332e0e01 maint: Use two newlines between endfunction and start of BIST tests.
Rik <rik@octave.org>
parents: 20852
diff changeset
113
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
114 %!testif HAVE_MAGICK
9382
ab563d2adc10 image/imread.m Test added.
Alexander Mamonov <mamonov@gmail.com>
parents: 9268
diff changeset
115 %! vpng = [ ...
ab563d2adc10 image/imread.m Test added.
Alexander Mamonov <mamonov@gmail.com>
parents: 9268
diff changeset
116 %! 137, 80, 78, 71, 13, 10, 26, 10, 0, 0, ...
ab563d2adc10 image/imread.m Test added.
Alexander Mamonov <mamonov@gmail.com>
parents: 9268
diff changeset
117 %! 0, 13, 73, 72, 68, 82, 0, 0, 0, 3, ...
ab563d2adc10 image/imread.m Test added.
Alexander Mamonov <mamonov@gmail.com>
parents: 9268
diff changeset
118 %! 0, 0, 0, 3, 8, 2, 0, 0, 0, 217, ...
ab563d2adc10 image/imread.m Test added.
Alexander Mamonov <mamonov@gmail.com>
parents: 9268
diff changeset
119 %! 74, 34, 232, 0, 0, 0, 1, 115, 82, 71, ...
ab563d2adc10 image/imread.m Test added.
Alexander Mamonov <mamonov@gmail.com>
parents: 9268
diff changeset
120 %! 66, 0, 174, 206, 28, 233, 0, 0, 0, 4, ...
ab563d2adc10 image/imread.m Test added.
Alexander Mamonov <mamonov@gmail.com>
parents: 9268
diff changeset
121 %! 103, 65, 77, 65, 0, 0, 177, 143, 11, 252, ...
ab563d2adc10 image/imread.m Test added.
Alexander Mamonov <mamonov@gmail.com>
parents: 9268
diff changeset
122 %! 97, 5, 0, 0, 0, 32, 99, 72, 82, 77, ...
ab563d2adc10 image/imread.m Test added.
Alexander Mamonov <mamonov@gmail.com>
parents: 9268
diff changeset
123 %! 0, 0, 122, 38, 0, 0, 128, 132, 0, 0, ...
ab563d2adc10 image/imread.m Test added.
Alexander Mamonov <mamonov@gmail.com>
parents: 9268
diff changeset
124 %! 250, 0, 0, 0, 128, 232, 0, 0, 117, 48, ...
ab563d2adc10 image/imread.m Test added.
Alexander Mamonov <mamonov@gmail.com>
parents: 9268
diff changeset
125 %! 0, 0, 234, 96, 0, 0, 58, 152, 0, 0, ...
ab563d2adc10 image/imread.m Test added.
Alexander Mamonov <mamonov@gmail.com>
parents: 9268
diff changeset
126 %! 23, 112, 156, 186, 81, 60, 0, 0, 0, 25, ...
ab563d2adc10 image/imread.m Test added.
Alexander Mamonov <mamonov@gmail.com>
parents: 9268
diff changeset
127 %! 73, 68, 65, 84, 24, 87, 99, 96, 96, 96, ...
ab563d2adc10 image/imread.m Test added.
Alexander Mamonov <mamonov@gmail.com>
parents: 9268
diff changeset
128 %! 248, 255, 255, 63, 144, 4, 81, 111, 101, 84, ...
ab563d2adc10 image/imread.m Test added.
Alexander Mamonov <mamonov@gmail.com>
parents: 9268
diff changeset
129 %! 16, 28, 160, 16, 0, 197, 214, 13, 34, 74, ...
ab563d2adc10 image/imread.m Test added.
Alexander Mamonov <mamonov@gmail.com>
parents: 9268
diff changeset
130 %! 117, 213, 17, 0, 0, 0, 0, 73, 69, 78, ...
ab563d2adc10 image/imread.m Test added.
Alexander Mamonov <mamonov@gmail.com>
parents: 9268
diff changeset
131 %! 68, 174, 66, 96, 130];
19278
6ca096827123 Use tempname() rather than tmpnam() in core Octave.
Rik <rik@octave.org>
parents: 18615
diff changeset
132 %! filename = [tempname() ".png"];
16967
52c1b832d98e imread: make sure test file is removed if imread() errors.
Carnë Draug <carandraug@octave.org>
parents: 16962
diff changeset
133 %! unwind_protect
52c1b832d98e imread: make sure test file is removed if imread() errors.
Carnë Draug <carandraug@octave.org>
parents: 16962
diff changeset
134 %! fid = fopen (filename, "wb");
52c1b832d98e imread: make sure test file is removed if imread() errors.
Carnë Draug <carandraug@octave.org>
parents: 16962
diff changeset
135 %! fwrite (fid, vpng);
52c1b832d98e imread: make sure test file is removed if imread() errors.
Carnë Draug <carandraug@octave.org>
parents: 16962
diff changeset
136 %! fclose (fid);
52c1b832d98e imread: make sure test file is removed if imread() errors.
Carnë Draug <carandraug@octave.org>
parents: 16962
diff changeset
137 %! A = imread (filename);
52c1b832d98e imread: make sure test file is removed if imread() errors.
Carnë Draug <carandraug@octave.org>
parents: 16962
diff changeset
138 %! unwind_protect_cleanup
52c1b832d98e imread: make sure test file is removed if imread() errors.
Carnë Draug <carandraug@octave.org>
parents: 16962
diff changeset
139 %! unlink (filename);
52c1b832d98e imread: make sure test file is removed if imread() errors.
Carnë Draug <carandraug@octave.org>
parents: 16962
diff changeset
140 %! end_unwind_protect
14363
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
141 %! assert (A(:,:,1), uint8 ([0, 255, 0; 255, 237, 255; 0, 255, 0]));
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
142 %! assert (A(:,:,2), uint8 ([0, 255, 0; 255, 28, 255; 0, 255, 0]));
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
143 %! assert (A(:,:,3), uint8 ([0, 255, 0; 255, 36, 255; 0, 255, 0]));
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
144
20338
a7770c66cb3d Saturated red channel on RGB image, makes imread() return logical (bug #41584)
Carnë Draug <carandraug@octave.org>
parents: 20158
diff changeset
145 %!function [r, cmap, a] = write_and_read (w, f_ext, varargin)
a7770c66cb3d Saturated red channel on RGB image, makes imread() return logical (bug #41584)
Carnë Draug <carandraug@octave.org>
parents: 20158
diff changeset
146 %! filename = [tempname() "." f_ext];
18615
1b6f5917ae4b imread.m: expand documentation and add tests for the PixelRegion option.
Carnë Draug <carandraug@octave.org>
parents: 18298
diff changeset
147 %! unwind_protect
1b6f5917ae4b imread.m: expand documentation and add tests for the PixelRegion option.
Carnë Draug <carandraug@octave.org>
parents: 18298
diff changeset
148 %! imwrite (w, filename);
1b6f5917ae4b imread.m: expand documentation and add tests for the PixelRegion option.
Carnë Draug <carandraug@octave.org>
parents: 18298
diff changeset
149 %! [r, cmap, a] = imread (filename, varargin{:});
1b6f5917ae4b imread.m: expand documentation and add tests for the PixelRegion option.
Carnë Draug <carandraug@octave.org>
parents: 18298
diff changeset
150 %! unwind_protect_cleanup
1b6f5917ae4b imread.m: expand documentation and add tests for the PixelRegion option.
Carnë Draug <carandraug@octave.org>
parents: 18298
diff changeset
151 %! unlink (filename);
1b6f5917ae4b imread.m: expand documentation and add tests for the PixelRegion option.
Carnë Draug <carandraug@octave.org>
parents: 18298
diff changeset
152 %! end_unwind_protect
1b6f5917ae4b imread.m: expand documentation and add tests for the PixelRegion option.
Carnë Draug <carandraug@octave.org>
parents: 18298
diff changeset
153 %!endfunction
1b6f5917ae4b imread.m: expand documentation and add tests for the PixelRegion option.
Carnë Draug <carandraug@octave.org>
parents: 18298
diff changeset
154
1b6f5917ae4b imread.m: expand documentation and add tests for the PixelRegion option.
Carnë Draug <carandraug@octave.org>
parents: 18298
diff changeset
155 ## test PixelRegion option
1b6f5917ae4b imread.m: expand documentation and add tests for the PixelRegion option.
Carnë Draug <carandraug@octave.org>
parents: 18298
diff changeset
156 %!testif HAVE_MAGICK
1b6f5917ae4b imread.m: expand documentation and add tests for the PixelRegion option.
Carnë Draug <carandraug@octave.org>
parents: 18298
diff changeset
157 %! w = randi (255, 100, 100, "uint8");
20338
a7770c66cb3d Saturated red channel on RGB image, makes imread() return logical (bug #41584)
Carnë Draug <carandraug@octave.org>
parents: 20158
diff changeset
158 %! [r, cmap, a] = write_and_read (w, "tif", "PixelRegion", {[50 70] [20 40]});
21580
ecce63c99c3f maint: Add semicolons to terminate code in %! blocks.
Rik <rik@octave.org>
parents: 20991
diff changeset
159 %! assert (r, w(50:70, 20:40));
20338
a7770c66cb3d Saturated red channel on RGB image, makes imread() return logical (bug #41584)
Carnë Draug <carandraug@octave.org>
parents: 20158
diff changeset
160 %! [r, cmap, a] = write_and_read (w, "tif", "PixelRegion", {[50 2 70] [20 3 40]});
21580
ecce63c99c3f maint: Add semicolons to terminate code in %! blocks.
Rik <rik@octave.org>
parents: 20991
diff changeset
161 %! assert (r, w(50:2:70, 20:3:40));
18615
1b6f5917ae4b imread.m: expand documentation and add tests for the PixelRegion option.
Carnë Draug <carandraug@octave.org>
parents: 18298
diff changeset
162
18298
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
163 ## If a file does not exist, it's the job of imread to check the file
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
164 ## exists before sending it over to __imread__ or whatever function
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
165 ## is defined in imformats to handle that specific format. This is the
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
166 ## same in imfinfo. So in this test we replace one format in imformats
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
167 ## with something that will not give an error if the file is missing
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
168 ## and make sure we do get an error.
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
169 %!testif HAVE_MAGICK
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
170 %! fmt = fmt_ori = imformats ("jpg");
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
171 %! fmt.read = @true;
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
172 %! error_thrown = false;
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
173 %! imformats ("update", "jpg", fmt);
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
174 %! unwind_protect
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
175 %! try
22558
1751d490dc2f test: Change tests w/imread to use names without spaces (bug #49219).
Rik <rik@octave.org>
parents: 22489
diff changeset
176 %! imread ("I_sure_hope_this_file_does_not_exist.jpg");
18298
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
177 %! catch
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
178 %! error_thrown = true;
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
179 %! end_try_catch
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
180 %! unwind_protect_cleanup
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
181 %! imformats ("update", "jpg", fmt_ori);
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
182 %! end_unwind_protect
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
183 %! assert (error_thrown, true);
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
184
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
185 ## make one of the formats read, return what it received as input to
27956
2310164737b3 fix many spelling errors (bug #57613)
John W. Eaton <jwe@octave.org>
parents: 26376
diff changeset
186 ## confirm that the input parsing is working correctly
18298
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
187 %!testif HAVE_MAGICK
19278
6ca096827123 Use tempname() rather than tmpnam() in core Octave.
Rik <rik@octave.org>
parents: 18615
diff changeset
188 %! fname = [tempname() ".jpg"];
18298
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
189 %! def_fmt = imformats ();
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
190 %! fid = fopen (fname, "w");
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
191 %! unwind_protect
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
192 %! fmt = imformats ("jpg");
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
193 %! fmt.read = @(varargin) varargin;
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
194 %! imformats ("update", "jpg", fmt);
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
195 %! assert (imread (fname), {fname});
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
196 %! assert (imread (fname, "jpg"), {fname});
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
197 %! assert (imread (fname(1:end-4), "jpg"), {fname});
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
198 %! extra_inputs = {"some", 89, i, {6 7 8}};
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
199 %! assert (imread (fname, extra_inputs{:}), {fname, extra_inputs{:}});
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
200 %! assert (imread (fname, "jpg", extra_inputs{:}), {fname, extra_inputs{:}});
30330
01de0045b2e3 maint: Shorten some long lines to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 29358
diff changeset
201 %! assert (imread (fname(1:end-4), "jpg", extra_inputs{:}),
01de0045b2e3 maint: Shorten some long lines to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 29358
diff changeset
202 %! {fname, extra_inputs{:}});
18298
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
203 %! unwind_protect_cleanup
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
204 %! fclose (fid);
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
205 %! unlink (fname);
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
206 %! imformats (def_fmt);
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
207 %! end_unwind_protect
15db54c4a572 Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents: 17744
diff changeset
208
20338
a7770c66cb3d Saturated red channel on RGB image, makes imread() return logical (bug #41584)
Carnë Draug <carandraug@octave.org>
parents: 20158
diff changeset
209 ## Test for bug #41584 (some GM coders report saturated channels as binary)
22489
93ea313301f9 test: Add bug ids (<#####>) to BIST tests.
Rik <rik@octave.org>
parents: 22323
diff changeset
210 %!testif HAVE_MAGICK <41584>
20338
a7770c66cb3d Saturated red channel on RGB image, makes imread() return logical (bug #41584)
Carnë Draug <carandraug@octave.org>
parents: 20158
diff changeset
211 %! im = zeros ([16 16 3], "uint8");
a7770c66cb3d Saturated red channel on RGB image, makes imread() return logical (bug #41584)
Carnë Draug <carandraug@octave.org>
parents: 20158
diff changeset
212 %! im(:,:,1) = 255;
a7770c66cb3d Saturated red channel on RGB image, makes imread() return logical (bug #41584)
Carnë Draug <carandraug@octave.org>
parents: 20158
diff changeset
213 %! im(:,:,3) = repmat (0:16:255, [16 1]);
a7770c66cb3d Saturated red channel on RGB image, makes imread() return logical (bug #41584)
Carnë Draug <carandraug@octave.org>
parents: 20158
diff changeset
214 %! [r, cmap, a] = write_and_read (im, "png");
a7770c66cb3d Saturated red channel on RGB image, makes imread() return logical (bug #41584)
Carnë Draug <carandraug@octave.org>
parents: 20158
diff changeset
215 %! assert (class (r), "uint8");
21580
ecce63c99c3f maint: Add semicolons to terminate code in %! blocks.
Rik <rik@octave.org>
parents: 20991
diff changeset
216 %! assert (isempty (cmap));
ecce63c99c3f maint: Add semicolons to terminate code in %! blocks.
Rik <rik@octave.org>
parents: 20991
diff changeset
217 %! assert (isempty (a));