How do I update an image object in App Designer?
    12 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Gary Burton-Wilcock
 el 28 de Jun. de 2019
  
    
    
    
    
    Comentada: RITAM BASU
 el 29 de Ag. de 2022
            I'm using the App Designers image object to display a jpeg. The code modifies the image data and then writes it back to the jpeg. However if I reload it in the image object it uses the original jpeg - presumably cached and not updated. The only way I have found to make it use the new image is to use a different filename for the modified image and then point to the new file. The image object appears to have a reset function but trying to use it causes a 'no method' error.
4 comentarios
  Geoff Hayes
      
      
 el 28 de Jun. de 2019
				Gary - so the only difference in the image is that you have added 25 to all elements of the app.img object? Do you see a change (in the image) when you view the updated image outside of MATLAB? Do you need to somehow refresh the app.Image?
Respuesta aceptada
  Guillaume
      
      
 el 28 de Jun. de 2019
        Yes, I can observe the same behaviour. I've not been able to find exactly which class is responsible for the problem yet, it's not the Image class itself, the class mark itself as dirty every time you set the ImageSource property. It must be something else upstream that sees that the filename hasn't changed and hence do not update the display. I'll report the problem to matlab.
On the other hand, personally, I'd never give a filename to ImageSource, instead I'd passed an image array:
        function readButtonPushed(app, event)
            app.img = imread("lena512.bmp");
            app.Image.ImageSource = repmat(app.img, 1, 1, 3);  %ImageSource wants a RGB image, not a greyscale image
            % the image appears in the Image control
        end
        % Button pushed function: modifyButton
        function modifyButtonPushed(app, event)
            app.img = app.img + 25;
        end
        % Button pushed function: reloadButton
        function reloadButtonPushed(app, event)
            app.Image.ImageSource = repmat(app.img, 1, 1, 3);
        end
which doesn't have the same problem.
8 comentarios
  Image Analyst
      
      
 el 29 de Ag. de 2022
				@RITAM BASU That's because it doesn't do anything.  The output is the same as the input.
img = randi(255, 3, 3) % Create sample image.
img2 = repmat(img, 1, 1, 1) % Do RITAM's "solution"
  RITAM BASU
 el 29 de Ag. de 2022
				Ah okay... It is exactly what I wanted. Just to open updated image every time. making it (1,1,3) gave me error mentioned by Bhisma Adhikari. 
I did not fully comprehend the use of writing the 3 though. Is it to make a greyscale picture RGB ? I see that Making it 3 makes 3 copies of the same array(img2 here). 
Thanks for the comment.. 
Have a nice day..
Más respuestas (0)
Ver también
Categorías
				Más información sobre Explore and Edit Images with Image Viewer App en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!






