vnshetty
vnshetty

Reputation: 20132

how to load images from sdcard in corona sdk

How can I display a image from sdcard or phone memory using corona sdk?`

Upvotes: 4

Views: 2533

Answers (2)

Rikard
Rikard

Reputation: 61

It is possible to read and write files on the SD-card using LFS and IO APIs on Android.

To access the phones inbuild memory, add the android permission "android.permission.WRITE_EXTERNAL_STORAGE" and set the path to "/". From there you can access the memorycard.

Example:

local lfs = require("lfs")
local path = "/"
local pathType = ""

-- Check to see if path exists
if path and lfs.attributes( path ) then
    pathType = lfs.attributes( path ).mode
end

-- Check if path is a directory
if pathType == "directory" then
   for file in lfs.dir( path ) do
       if "." ~= file and ".." ~= file then
          -- Get the file attributes.
          local fileAtr = lfs.attributes( path .. "/" .. file )
          -- Print path, name and type of file (Directory or file)
          print(path,file,fileAtr.mode)
       end
    end
end

This will print the path, filename and type of file in the terminal window. (Have only tested on Mac and Android device.)

I have found a way to display an image outside the sandbox on Android and on the simulator. (PC not tested)

Example:

local lfs = require("lfs")
    --------------------------- Change this path ---------------------------
local path = "path/to/the/image.jpg"                                    -- Change this path to the path of an image on your computer
------------------------------------------------------------------------


local tmpPath = system.pathForFile("tmp.jpg",system.TemporaryDirectory) -- Destination path to the temporary image

--------------------------- Read ----------------------------
local file, reason = io.open( path, "r" )                               -- Open the image in read mode
local contents
if file then
    contents = file:read( "*a" )                                        -- Read contents
    io.close( file )                                                    -- Close the file (Important!)
else
    print("Invalid path")
    return
end

--------------------------- Write ----------------------------

local file = io.open( tmpPath, "w" )                                    -- Open the destination path in write mode
if file then
    file:write(contents)                                                -- Writes the contents to a file
    io.close(file)                                                      -- Close the file (Important!)
else
    print("Error")
    return
end

---------------------- Open and remove -----------------------
local img = display.newImage("tmp.jpg",system.TemporaryDirectory)       -- Display the image from the temporary directory
os.remove(tmpPath)                                                      -- Removes the image, so that we can load another image.

Upvotes: 6

Krystian
Krystian

Reputation: 3423

I'm using Corona SDK to develop for iOS but I believe corona apps are sandboxed and you are not able to read anything outside the sandbox. Thought this might only be true for iOS apps.

Upvotes: 0

Related Questions