Reputation: 20132
How can I display a image from sdcard or phone memory using corona sdk?`
Upvotes: 4
Views: 2533
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
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