I can't test for android, but i did see that 32-bit PNG's don't work, and 24-bit works (without alpha channel). Here's a new function that both uses temporary TBitmap buffer and removes alpha channel. (Background should be black by default, or it might in some cases be undefined. Then fill bmp with color before Draw(). Only notable point with images that have transparent pixels.)
var src, dest: TRect;
bmp: TBitmap;
w, h: integer;
begin
w:=image1.Picture.Width; h:=image1.Picture.Height;
dest:=bounds(0, 0, w, h);
//src:=rect(0, h-1, w-1, 0); // Vertical flip
//src:=rect(w-1, 0, 0, h-1); // Horizontal flip
src:=rect(w-1, h-1, 0, 0); // Both flip
bmp:=TBitmap.Create;
bmp.PixelFormat:=pf24bit;
bmp.SetSize(w, h);
bmp.Canvas.Draw(0, 0, image1.Picture.Bitmap);
image1.Picture.Bitmap.Canvas.CopyRect(dest, bmp.Canvas, src);
bmp.Free;
end;