Why did imread() stop working when I changed to 2019a?

I have been using imread to get images from a server by putting requests into the URL argument: im = imread(url). Now I'm getting an error "Can't read URL, ..., Reason: first input must be 1xN cell array of strings." What is it talking about?
EDIT: I wasted everyone's time with this. After digging deeper, I found that I had an old version of strjoin() in my path somehow. The function must have changed in a critical way. Problem disappeared when I removed this old version.

2 Comments

I believe that this is not due to going to 2019a, but related to recent permission lockdowns on /tmp directory (linux). I need to figure out how to point matlab to a different temp directory to test this.
Nevermind. I still don't know what's going on.

Sign in to comment.

Answers (1)

Can you show us the class and size of the url variable you're passing into imread?
Is it a character vector or a string scalar as the documentation page for the imread function indicates it needs to be? See the section describing the Input Arguments, specifically the filename input argument.

3 Comments

The code is on an offline system, but the format of the url argument is like this:
'http://abc.com/xyz/abc.cgi?request=getimg&bbox=1,2,3&format=image/jpeg'
I've traced the problem down to a strjoin command in matlab.net.QueryParameter/string. It looks like it is trying to tear the URL string apart into a URI structure and rebuild it, and failing along the way.
class of url is 'char' and size is 1x150.
It looks like that would not give a simple filename, but possibly a list of a whole bunch of filenames. I suggest you somehow use webread() to execute that query and then parse out the filenames one at a time.
No, it just gives back one jpeg file. It used to work just fine (for years). I jumped from 2016a to 2019a.
I was experimenting and webread gives the same error anyway. I can't say I understand why there is so much code to rip the URL into pieces and glue it back together. webread does the same.
EDIT: urlread functions without error, but it just gives me a character vector, presumably raw jpeg bytes, which isn't all that helpful and would require a bit of workaround to make into pixels.

Sign in to comment.

Categories

Find more on Convert Image Type in Help Center and File Exchange

Products

Release

R2019a

Asked:

on 10 Mar 2020

Edited:

on 11 Mar 2020

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!