So I have dug through the documentation and it doesn't seem that QB64 supports changing the opacity of PNGs that already include opacity information.
_SETALPHA changes all pixels in the image, or only pixels of a certain colour. There is no way to make _SETALPHA take already partially-opaque pixels of the PNG and then apply an opacity to that.
It seems the only way that QB64 supports translucent PNGs is with 1-bit transparency, pixel on or off. That would be easy enough to create a colour mask for in QB64, but it will look much uglier than a PNG with 256 levels of translucency.
Another way I can see to deal with already translucent PNGs is to _COPYIMAGE the original image, then manually go over the entire image pixel by pixel and update the alpha values manually, taking into account the starting pixel's translucency value. I doubt this would work fast enough to use in realtime at 1080p/60fps when fading a few translucent images in and out.
The other way I can see possibly working is to use _COPYIMAGE on the original image, then use _SETALPHA on the range that includes all colours more than 50% opaque, while turning colours less than 50% opaque fully transparent. This way might work fast enough, but it would still have the issue that partially translucent pixels in the original image would not be honoured, thus losing all the beautiful antialised edges of the original image.
Is there really no way to adjust the opacity of an already-partially-translucent image in QB64?
If not, I think this is a really important feature. As it stands now _SETALPHA is only relevant for 1-bit transparency, which is frankly silly -- _SETALPHA is a command that lets you assign a full 8bits of opacity, but it can't handle images which already contain partially-opaque pixels. This is saddening. :-/