Using "Send a Microsoft Graph HTTP" actions to get the content id and then the image file content seems like it should work, given some of the endpoints that are published, but I also could not get it to work at all either testing just now. In fact I couldn't get any "Send a Microsoft Graph HTTP" to work, and when I tried using the demo ones on Microsoft's page they wouldn't work either. Would love to hear if someone else knows more about it.
That said, after a few tests I was eventually able to download the hosted content from a Teams message by parsing out the url from the <img> element's "src=" property and sending this to a HTTP GET action.
You can parse out the whole thing using some nested split() and first()/last() functions, or you could feed the message html to a GPT action and give it a prompt to extract the img url.
The link to the image appears to follow this format.
https://graph.microsoft.com/v1.0/chats/{chatId}/messages/{messageId}/hostedContents/{hostedContentId}=/$value
You just get that and give it to a generic HTTP GET action (along with proper authentication).
The only catch here is the HTTP GET action needs proper authorization. There's probably a few ways to do it, I just used an App User I have for making other API calls in my system. I had to go into Entra and grant it some Graph API Permissions to read chats, etc.
Here's a camera snap I sent from my tablet to a teams chat.
Here's the image after the flow saves it to sharepoint