Antarr Byrd
Antarr Byrd

Reputation: 26169

file stored on s3 not rendering in browser

I am copying an image that I extract from an .ipa file on s3. The file is getting move correctly but when every I try to view it in a browsers it appear to broken, in google chrome. If I download the file directly to my machine and open it appears perfectly fine. It also renders ok in Safari.

Dir.mktmpdir do |dir|
   Zip::File.open(tmp_ipa) do |zip_file|
   # Find Icon File
   icon = zip_file.find do |entry|
     entry.name.include? 'AppIcon76x76@2'
   end
   icon.extract(File.join(dir, 'AppIcon.png'))
     s3_icon = bucket.objects[icon_dest]
     s3_icon.write(Pathname.new(File.join(dir, 'AppIcon.png')))
     icon_url = s3_icon.public_url.to_s
   end
end

Upvotes: 1

Views: 721

Answers (2)

Asaph
Asaph

Reputation: 162851

The most likely problem is that you didn't set the Content-Type to image/png when you uploaded your image to S3. Try this on the command line:

curl -i http://your-bucket.s3.amazonaws.com/path/to/AppIcon.png

What's the Content-Type header? If it isn't image/png, set that at the time you upload.

Upvotes: 4

Alexander O'Mara
Alexander O'Mara

Reputation: 60587

This is almost certainly because Apple uses a non-standard proprietary extension of the PNG file format for the PNG files in an iPhone APP (archived link), such as the .ipa you say it was extracted from.

The reason it works in Safari, is because Safari uses the OS's image decoding libraries, which do support this non-standard format.

There are some conversion scripts out there, that work with varying success.

Upvotes: 2

Related Questions