Mercurial > octave-antonio
annotate scripts/image/imread.m @ 16944:1b3b3ee88284
Add optional extension argument to image IO functions.
* imfinfo.m, private/core_imfinfo.m, imread.m, private/core_imread.m,
imwrite.m: added support for optional EXT argument.
* imwrite.m: in addition to support the extra EXT argument, removed list
of supported image formats from help text, and suggested to use
imformats() instead.
* private/core_imwrite.m: remove usage of __magick_format_list__() which
is being replaced by imformats(). Check validity of colormap earlier on.
Removed tests that are repeated in imwrite.m (leftovers from copying
the file).
* private/imageIO.m: deal with separate filename and extension and ignore
file existence checking if we are writing.
* __magic_read__.cc: remove private function __magick_format_list__()
that was only being used by core_imwrite.m and is being replaced by
imformats().
author | Carnë Draug <carandraug@octave.org> |
---|---|
date | Wed, 10 Jul 2013 18:18:21 +0100 |
parents | d0558ee259ad |
children | fb940d48c6f7 |
rev | line source |
---|---|
16768 | 1 ## Copyright (C) 2008-2012 Thomas L. Scofield |
2 ## Copyright (C) 2008 Kristian Rumberg | |
3 ## Copyright (C) 2006 Thomas Weber | |
4 ## Copyright (C) 2005 Stefan van der Walt | |
8920 | 5 ## Copyright (C) 2002 Andy Adler |
7925
9316b59903c9
Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff
changeset
|
6 ## |
9316b59903c9
Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff
changeset
|
7 ## 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
|
8 ## |
9316b59903c9
Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff
changeset
|
9 ## Octave is free software; you can redistribute it and/or modify it |
9316b59903c9
Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff
changeset
|
10 ## under the terms of the GNU General Public License as published by |
9316b59903c9
Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff
changeset
|
11 ## the Free Software Foundation; either version 3 of the License, or (at |
9316b59903c9
Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff
changeset
|
12 ## your option) any later version. |
9316b59903c9
Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff
changeset
|
13 ## |
9316b59903c9
Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff
changeset
|
14 ## 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
|
15 ## WITHOUT ANY WARRANTY; without even the implied warranty of |
9316b59903c9
Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff
changeset
|
16 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
9316b59903c9
Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff
changeset
|
17 ## General Public License for more details. |
9316b59903c9
Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff
changeset
|
18 ## |
9316b59903c9
Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff
changeset
|
19 ## 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
|
20 ## along with Octave; see the file COPYING. If not, see |
9316b59903c9
Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff
changeset
|
21 ## <http://www.gnu.org/licenses/>. |
9316b59903c9
Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff
changeset
|
22 |
9316b59903c9
Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff
changeset
|
23 ## -*- texinfo -*- |
16944
1b3b3ee88284
Add optional extension argument to image IO functions.
Carnë Draug <carandraug@octave.org>
parents:
16913
diff
changeset
|
24 ## @deftypefn {Function File} {[@var{img}, @var{map}, @var{alpha}] =} imread (@var{filename}) |
1b3b3ee88284
Add optional extension argument to image IO functions.
Carnë Draug <carandraug@octave.org>
parents:
16913
diff
changeset
|
25 ## @deftypefnx {Function File} {[@dots{}] =} imread (@var{filename}, @var{ext}) |
1b3b3ee88284
Add optional extension argument to image IO functions.
Carnë Draug <carandraug@octave.org>
parents:
16913
diff
changeset
|
26 ## @deftypefnx {Function File} {[@dots{}] =} imread (@var{url}) |
7925
9316b59903c9
Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff
changeset
|
27 ## 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
|
28 ## |
16944
1b3b3ee88284
Add optional extension argument to image IO functions.
Carnë Draug <carandraug@octave.org>
parents:
16913
diff
changeset
|
29 ## Reads an image as a matrix from the file @var{filename}. If there is |
1b3b3ee88284
Add optional extension argument to image IO functions.
Carnë Draug <carandraug@octave.org>
parents:
16913
diff
changeset
|
30 ## no file @var{filename}, and @var{ext} was specified, it will look for |
1b3b3ee88284
Add optional extension argument to image IO functions.
Carnë Draug <carandraug@octave.org>
parents:
16913
diff
changeset
|
31 ## a file named @var{filename} and extension @var{ext}, i.e., a file named |
1b3b3ee88284
Add optional extension argument to image IO functions.
Carnë Draug <carandraug@octave.org>
parents:
16913
diff
changeset
|
32 ## @var{filename}.@var{ext}. |
1b3b3ee88284
Add optional extension argument to image IO functions.
Carnë Draug <carandraug@octave.org>
parents:
16913
diff
changeset
|
33 ## |
7925
9316b59903c9
Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff
changeset
|
34 ## The size and numeric class of the output depends on the |
9072
bd8e388043c4
Cleanup documentation for signal.texi, image.texi, audio.texi
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
35 ## format of the image. A color image is returned as an |
11591
1d13679b587e
Use @nospell macro on certain words in docstrings.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
36 ## @nospell{MxNx3} matrix. Gray-level and black-and-white images are |
1d13679b587e
Use @nospell macro on certain words in docstrings.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
37 ## of size @nospell{MxN}. |
9072
bd8e388043c4
Cleanup documentation for signal.texi, image.texi, audio.texi
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
38 ## The color depth of the image determines the numeric |
10791
3140cb7a05a1
Add spellchecker scripts for Octave and run spellcheck of documentation
Rik <octave@nomad.inbox5.com>
parents:
10433
diff
changeset
|
39 ## class of the output: "uint8" or "uint16" for gray |
9072
bd8e388043c4
Cleanup documentation for signal.texi, image.texi, audio.texi
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
40 ## and color, and "logical" for black and white. |
8148 | 41 ## |
16944
1b3b3ee88284
Add optional extension argument to image IO functions.
Carnë Draug <carandraug@octave.org>
parents:
16913
diff
changeset
|
42 ## @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
|
43 ## @end deftypefn |
9316b59903c9
Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff
changeset
|
44 |
16944
1b3b3ee88284
Add optional extension argument to image IO functions.
Carnë Draug <carandraug@octave.org>
parents:
16913
diff
changeset
|
45 ## Author: Thomas L. Scofield <scofield@calvin.edu> |
1b3b3ee88284
Add optional extension argument to image IO functions.
Carnë Draug <carandraug@octave.org>
parents:
16913
diff
changeset
|
46 ## Author: Kristian Rumberg <kristianrumberg@gmail.com> |
1b3b3ee88284
Add optional extension argument to image IO functions.
Carnë Draug <carandraug@octave.org>
parents:
16913
diff
changeset
|
47 ## Author: Thomas Weber <thomas.weber.mail@gmail.com> |
1b3b3ee88284
Add optional extension argument to image IO functions.
Carnë Draug <carandraug@octave.org>
parents:
16913
diff
changeset
|
48 ## Author: Stefan van der Walt <stefan@sun.ac.za> |
1b3b3ee88284
Add optional extension argument to image IO functions.
Carnë Draug <carandraug@octave.org>
parents:
16913
diff
changeset
|
49 ## Author: Andy Adler |
1b3b3ee88284
Add optional extension argument to image IO functions.
Carnë Draug <carandraug@octave.org>
parents:
16913
diff
changeset
|
50 |
1b3b3ee88284
Add optional extension argument to image IO functions.
Carnë Draug <carandraug@octave.org>
parents:
16913
diff
changeset
|
51 function varargout = imread (varargin) |
7925
9316b59903c9
Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff
changeset
|
52 if (nargin < 1) |
7931
de26beacb20f
imread.m: simplify; loadimage.m: deprecate
John W. Eaton <jwe@octave.org>
parents:
7925
diff
changeset
|
53 print_usage (); |
16944
1b3b3ee88284
Add optional extension argument to image IO functions.
Carnë Draug <carandraug@octave.org>
parents:
16913
diff
changeset
|
54 elseif (! ischar (varargin{1})) |
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
|
55 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
|
56 endif |
16944
1b3b3ee88284
Add optional extension argument to image IO functions.
Carnë Draug <carandraug@octave.org>
parents:
16913
diff
changeset
|
57 ## In case the file format was specified as a separate argument we |
1b3b3ee88284
Add optional extension argument to image IO functions.
Carnë Draug <carandraug@octave.org>
parents:
16913
diff
changeset
|
58 ## do this. imageIO() will ignore the second part if filename on its |
1b3b3ee88284
Add optional extension argument to image IO functions.
Carnë Draug <carandraug@octave.org>
parents:
16913
diff
changeset
|
59 ## own is enough. And if the second argument was a parameter name instead |
1b3b3ee88284
Add optional extension argument to image IO functions.
Carnë Draug <carandraug@octave.org>
parents:
16913
diff
changeset
|
60 ## of an extension, it is still going to be passed to the next function |
1b3b3ee88284
Add optional extension argument to image IO functions.
Carnë Draug <carandraug@octave.org>
parents:
16913
diff
changeset
|
61 ## since we are passing the whole function input as well. |
1b3b3ee88284
Add optional extension argument to image IO functions.
Carnë Draug <carandraug@octave.org>
parents:
16913
diff
changeset
|
62 filename = {varargin{1}}; |
1b3b3ee88284
Add optional extension argument to image IO functions.
Carnë Draug <carandraug@octave.org>
parents:
16913
diff
changeset
|
63 if (nargin > 1 && ischar (varargin {2})) |
1b3b3ee88284
Add optional extension argument to image IO functions.
Carnë Draug <carandraug@octave.org>
parents:
16913
diff
changeset
|
64 filename{2} = varargin{2}; |
1b3b3ee88284
Add optional extension argument to image IO functions.
Carnë Draug <carandraug@octave.org>
parents:
16913
diff
changeset
|
65 endif |
1b3b3ee88284
Add optional extension argument to image IO functions.
Carnë Draug <carandraug@octave.org>
parents:
16913
diff
changeset
|
66 |
1b3b3ee88284
Add optional extension argument to image IO functions.
Carnë Draug <carandraug@octave.org>
parents:
16913
diff
changeset
|
67 varargout{1:nargout} = imageIO (@core_imread, "read", filename, varargin{:}); |
7925
9316b59903c9
Add original imread() files (from octave-forge) to core octave.
Thomas L. Scofield <scofield AT calvin DOT edu>
parents:
diff
changeset
|
68 endfunction |
9382
ab563d2adc10
image/imread.m Test added.
Alexander Mamonov <mamonov@gmail.com>
parents:
9268
diff
changeset
|
69 |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
70 %!testif HAVE_MAGICK |
9382
ab563d2adc10
image/imread.m Test added.
Alexander Mamonov <mamonov@gmail.com>
parents:
9268
diff
changeset
|
71 %! vpng = [ ... |
ab563d2adc10
image/imread.m Test added.
Alexander Mamonov <mamonov@gmail.com>
parents:
9268
diff
changeset
|
72 %! 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
|
73 %! 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
|
74 %! 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
|
75 %! 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
|
76 %! 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
|
77 %! 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
|
78 %! 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
|
79 %! 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
|
80 %! 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
|
81 %! 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
|
82 %! 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
|
83 %! 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
|
84 %! 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
|
85 %! 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
|
86 %! 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
|
87 %! 68, 174, 66, 96, 130]; |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
88 %! fid = fopen ("test.png", "wb"); |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
89 %! fwrite (fid, vpng); |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
90 %! fclose (fid); |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
91 %! A = imread ("test.png"); |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
92 %! delete ("test.png"); |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
93 %! 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
|
94 %! 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
|
95 %! 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
|
96 |