Если вы используете Delphi 2009, TImage должен сохранить ваш файл PNG в формате PNG в файле DFM. DFM будет больше, потому что двоичное содержимое свойства Picture.Data объекта TImage закодировано в DFM как шестнадцатеричный текст. Но когда DFM скомпилирован в ваш EXE-файл, он скомпилирован в двоичный ресурс. Затем ваше изображение должно занимать то же пространство внутри ресурса RCDATA формы, что и хранение PNG в собственном ресурсе RCDATA.
Я только что проверил это, открыв один из моих собственных файлов DFM Delphi 2009 с компонентом TImage с изображением PNG, загруженным во время разработки в текстовом редакторе, скопировав содержимое свойства Picture.Data и вставив его в шестнадцатеричный код. редактор. Шестнадцатеричный редактор показывает мне, что свойство Picture.Data хранит фактический файл PNG с префиксом 10 байтов. Первый байт равен $ 09, а следующие 9 байтов означают TPngImage. Если я удаляю эти 10 байтов и сохраняю файл в шестнадцатеричном редакторе, я получаю правильный файл PNG.
Так что, если вы используете Delphi 2009, просто загрузите изображение PNG в компонент TImage во время разработки.