I found a really good way of doing this today and remembered this thread.
You can put your button and image uploader in an align to parent container so that the image uploader sits on top of the button. Remove the background and border so it’s 100% transparent.
Next you’ll want to stop the preview image showing after you upload.
Easiest way to do that is to make the entire image uploader into padding.
Say your button is 20px high
Set the padding top and bottom on the image uploader to 20px
It’s that easy.