I'm curious if imread/imwrite are still works in progress in  
octave-forge.  I have set it up on both a linux machine and a mac.   
Right now I only have access to the linux box.  I can run a command like

   im = imread("file.jpg")

and then display the image with imshow.  But I get error messages when  
I attempt to load files in other image formats (I've tried just .png  
and .gif).  The imread code branches in three directions based on the  
image type: if reading a .jpg file it calls jpgread.oct to import the  
file; if a .png file, it calls pngread.oct; if any other format, it  
calls __magick_read__.oct.  In fact, though I have the image package  
installed, the latter two oct-files appear not to exist at all.  There  
is source code for both, and I can successfully run mkoctfile on  
pngread.cc, but placing the resulting pngread.oct file in the same  
directory as jpgread.oct does not make reading .png files possible, as  
I get the result

octave: symbol lookup error:  
/home/tom/octave/image-1.0.6/x86_64-pc-linux-gnu-api-v32/pngread.oct:  
undefined symbol: png_check_sig

and then Octave apparently quits un-elegantly.  It is the case,  
however, that after putting pngread.oct in that directory, the command

   which pngread

produces the output

pngread is the dynamically-linked function from the file
/home/tom/octave/image-1.0.6/x86_64-pc-linux-gnu-api-v32/pngread.oct

When I run

   mkoctfile -I/usr/include/ImageMagick __magick_read__.cc

then the compilation process produces __magick_read__.oct without  
error messages.  However, when I place that .oct file in the same  
directory as the others and type

   which __magick_read__

I get

error:  
/home/tom/octave/image-1.0.6/x86_64-pc-linux-gnu-api-v32/__magick_read__.oct:  
undefined symbol: _ZTIN6Magick9ExceptionE
which: `__magick_read__' is undefined

which I find surprising, given that it is the same location as  
jpgread.oct and pngread.oct.  I left it in that directory anyway and  
tried to use imread to import a .gif, but got the message

warning: isstr is obsolete and will be removed from a future version  
of Octave, please use ischar instead
error:  
/home/tom/octave/image-1.0.6/x86_64-pc-linux-gnu-api-v32/__magick_read__.oct:  
undefined symbol: _ZTIN6Magick9ExceptionE
error: `__magick_read__' undefined near line 73 column 33
error: evaluating if command near line 72, column 5
error: called from `imread' in file `/home/tom/octave/image-1.0.6/imread.m'
error: evaluating assignment expression near line 5, column 4

which was probably fairly predictable given the above.

One more interesting thing, which may reflect only my ignorance in  
programming dynamically-linked files for Octave.  I ran

   mkoctfile jpgread.cc

and then replaced the working copy of jpgread.oct with the result of  
the compile I did.  At that point I could no longer import .jpg files.

So, my question is whether there is something fairly obvious I am, in  
my ignorance, doing incorrectly?  Is this behavior specific to a  
certain platform like Linux (as I said, I cannot test things on my Mac  
right now)?  Or is it quite well known among recent users that only  
.jpg files can be read using imread?  If the latter, has the interface  
to ImageMagick ever worked?  (It has been a matter of some confusion  
in the octave-maintainers list as to why .jpg and .png formats were  
handled separately and only other formats resulted in calls to  
Magick++ library routines, but this would certainly make the reasons  
for that clearer.)

Thomas Scofield


-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
Octave-dev mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/octave-dev

Reply via email to