imread not working for gif problem

조회 수: 3 (최근 30일)
Yu Li
Yu Li 2019년 9월 15일
댓글: Yu Li 2019년 9월 16일
Hi:
I have a gif and I want to read into Matlab, but it does not work, is there any mistake with my operation?
the code is:
imread('giphy.gif', 'frames',100);
imread('giphy.gif', 'frames','all')
the reported error is: Unable to perform assignment because the left and right sides have a different number of elements.
Thanks!
Yu

채택된 답변

Rik
Rik 2019년 9월 15일
It took some digging with the debugger, but with enough breakpoints I was able to track down the cause. Your calls are failing because the imgifinfo function fails (it is called by readgif>read_multiframe_gif which is called by imread>call_format_specific_reader). It doesn't return an error, but it doesn't determine a backgroundcolor for the image.
The image has transparent pixels and no background. This is normally not an issue, but the disposalMethod is set to RestoreBG. This is the root cause of your issue. A less strict reader might inject a default background (MSpaint picks black), but the reading function in Matlab doesn't test for this case. I don't know enough of the format specification to know if Matlab is too strict, or that your gif file is simply incorrect.
%these lines fail
%transparent_pixels=background pixels surrounding the arrow
%background_color=[];
%current_frame=the image with the transparent pixels set to 0
% Replace the transparent pixels with the background color
if ~isempty(transparent_pixels)
current_frame(transparent_pixels) = background_color;
end
  댓글 수: 1
Yu Li
Yu Li 2019년 9월 16일
Hi:
thanks for your effort. I have contacted Mathworks support to take a deep look.
thank you very much again!
Bests,
Yu

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Read, Write, and Modify Image에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by