cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Highlighted
Community Champion
Community Champion

Solved: How to save captured images in SharePoint

It is possible to save images taken with a camera to SharePoint by saving the image's Url property to a "Multiple lines of text" type column in a SharePoint list.  This works because the Url property contains the image data in base64 format, and you can see this if you display the Url property in a text box.

 

NB: This is not going to work in all environments, please see following discussion for details

 

Here is how to make a working app, screenshots below:

  1. Create a new list in SharePoint called "PowerAppsImages" and add a "Multiple line of text" column called "MyImageData"
  2. Create a new blank mobile PowerApp
  3. Connect PowerAppsImages as a data source
  4. Add a second screen (Screen2), and go back to Screen1 (the landing screen)
  5. In the landing screen create a camera control and set its OnSelect property to:
    ClearCollect(LocalImage, Camera1.Photo); UpdateContext({PhotoDateTime: Now()})
  6. On the same screen create an image control and set its Image property to:
    First(LocalImage).Url
  7. On the same screen create a text input and set its Default property to:
    "Photo taken "& PhotoDateTime
  8. On the same screen create a button and set its Text property to "Save to SP" and its OnSelect property to:
    Patch(PowerAppsImages, Defaults(PowerAppsImages), {Title: TextInput1.Text, MyImageData: First(LocalImage).Url})
  9. On the same screen, create a right arrow icon and set its OnSelect property to:
    Navigate(Screen2, None)
  10. Now change to Screen2 and create a left arrow icon and set its OnSelect property to:
    Back()
  11. On Screen2 add a refresh icon and set its OnSelect property to:
    Refresh(PowerAppsImages)
    This is needed because the delete button (to be added in subsequent steps) does not always refresh
  12. On Screen2 add a text box and set its Text property to:
    "Total count of images: "&CountRows(PowerAppsImages)
  13. On Screen 2 create a vertical custom gallery and set its Items property to:
    PowerAppsImages
  14. In the gallery's template create a text box and set its Title property to:
    ThisItem.Title
  15. In the gallery's template create an image control and set its Image property to:
    ThisItem.MyImageData
  16. In the gallery's template create a trash can icon and set its OnSelect property to:
    Remove(PowerAppsImages, ThisItem)
  17. Save and enjoy

 

I would be welcome for any feedback, particualrly if this does not work for someone.

 

PS You can turn all of the images into real jpg files by converting the base64 text to bytes with any online converter, just make sure you take only the text after the initial "data:image/jpeg;base64,"

 

__.JPG000.JPG

43 REPLIES 43
Highlighted
Anonymous
Not applicable

After this i'd like to add another column in the List from sharepoint for "PersonToVisit", since I'm primarily using this for our visitor management app. How can I add that "Search Person to Visit" (Will pull out users via Display Name, then will get their emails etc) function that'll save that person in the sharepoint list as well? So that I can use flows to use all this data to send an email eventually.


@Meneghino wrote:

It is possible to save images taken with a camera to SharePoint by saving the image's Url property to a "Multiple lines of text" type column in a SharePoint list.  This works because the Url property contains the image data in base64 format, and you can see this if you display the Url property in a text box.

 

NB: This is not going to work in all environments, please see following discussion for details

 

Here is how to make a working app, screenshots below:

  1. Create a new list in SharePoint called "PowerAppsImages" and add a "Multiple line of text" column called "MyImageData"
  2. Create a new blank mobile PowerApp
  3. Connect PowerAppsImages as a data source
  4. Add a second screen (Screen2), and go back to Screen1 (the landing screen)
  5. In the landing screen create a camera control and set its OnSelect property to:
    ClearCollect(LocalImage, Camera1.Photo); UpdateContext({PhotoDateTime: Now()})
  6. On the same screen create an image control and set its Image property to:
    First(LocalImage).Url
  7. On the same screen create a text input and set its Default property to:
    "Photo taken "& PhotoDateTime
  8. On the same screen create a button and set its Text property to "Save to SP" and its OnSelect property to:
    Patch(PowerAppsImages, Defaults(PowerAppsImages), {Title: TextInput1.Text, MyImageData: First(LocalImage).Url})
  9. On the same screen, create a right arrow icon and set its OnSelect property to:
    Navigate(Screen2, None)
  10. Now change to Screen2 and create a left arrow icon and set its OnSelect property to:
    Back()
  11. On Screen2 add a refresh icon and set its OnSelect property to:
    Refresh(PowerAppsImages)
    This is needed because the delete button (to be added in subsequent steps) does not always refresh
  12. On Screen2 add a text box and set its Text property to:
    "Total count of images: "&CountRows(PowerAppsImages)
  13. On Screen 2 create a vertical custom gallery and set its Items property to:
    PowerAppsImages
  14. In the gallery's template create a text box and set its Title property to:
    ThisItem.Title
  15. In the gallery's template create an image control and set its Image property to:
    ThisItem.MyImageData
  16. In the gallery's template create a trash can icon and set its OnSelect property to:
    Remove(PowerAppsImages, ThisItem)
  17. Save and enjoy

 

I would be welcome for any feedback, particualrly if this does not work for someone.

 

PS You can turn all of the images into real jpg files by converting the base64 text to bytes with any online converter, just make sure you take only the text after the initial "data:image/jpeg;base64,"

 

__.JPG000.JPG


 

Highlighted
New Member

The solution is works 100%.

 

In my case, add data:image/jpeg;base64, with the code then works otherwise didn't.

 

Highlighted
Regular Visitor

Thanks for the solution @Meneghino 😉.

 

Gracias por la solución @Meneghino  😉.

Highlighted
Frequent Visitor

Is it possible to do this with the "Add Image" function instead of the "Camera" function? My users need to have the ability to use the flash on the camera as well.

Helpful resources

Announcements
Community Conference

Power Platform Community Conference

Check out the on demand sessions that are available now!

News & Announcements

Community Blog

Stay up tp date on the latest blogs and activities in the community News & Announcements.

secondImage

Power Platform 2020 release wave 2 plan

Features releasing from October 2020 through March 2021

Community Highlights

Community Highlights

Check out the Power Platform Community Highlights

Top Solution Authors
Top Kudoed Authors
Users online (8,892)