The code below will extract icon from file and convert it to png but without alpha transparency ?
var
IconIndex : word;
icon:TIcon;
png:TPngImage;
bm
Although TPngImage is no longer open source, if I take a quick look in an old copy I have lying around here, TPngImage.Assign only checks if the source is a TPngImage, and if not lets the 'default' assign do it's work, and for TBitmap or TGraphic, this will most probably use a plain draw on the canvas which throws away the transparency.
This looks like something to post on Delphi QC