diff --git a/core/modules/file/src/Element/ManagedFile.php b/core/modules/file/src/Element/ManagedFile.php
index 426f40c..f465b18 100644
--- a/core/modules/file/src/Element/ManagedFile.php
+++ b/core/modules/file/src/Element/ManagedFile.php
@@ -49,6 +49,7 @@ public function getInfo() {
       '#attached' => [
         'library' => ['file/drupal.file'],
       ],
+      '#accept' => NULL,
     ];
   }
 
@@ -308,6 +309,9 @@ public static function processManagedFile(&$element, FormStateInterface $form_st
       '#weight' => -10,
       '#error_no_message' => TRUE,
     ];
+    if (!empty($element['#accept'])) {
+      $element['upload']['#attributes'] = ['accept' => $element['#accept']];
+    }
 
     if (!empty($fids) && $element['#files']) {
       foreach ($element['#files'] as $delta => $file) {
diff --git a/core/modules/image/src/Plugin/Field/FieldWidget/ImageWidget.php b/core/modules/image/src/Plugin/Field/FieldWidget/ImageWidget.php
index 2fe5841..f881419 100644
--- a/core/modules/image/src/Plugin/Field/FieldWidget/ImageWidget.php
+++ b/core/modules/image/src/Plugin/Field/FieldWidget/ImageWidget.php
@@ -123,6 +123,9 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
     $extensions = array_intersect(explode(' ', $extensions), $supported_extensions);
     $element['#upload_validators']['file_validate_extensions'][0] = implode(' ', $extensions);
 
+    // Add mobile device image capture acceptance.
+    $element['#accept'] = 'image/*';
+
     // Add properties needed by process() method.
     $element['#preview_image_style'] = $this->getSetting('preview_image_style');
     $element['#title_field'] = $field_settings['title_field'];
diff --git a/core/modules/image/src/Tests/ImageFieldWidgetTest.php b/core/modules/image/src/Tests/ImageFieldWidgetTest.php
index ea2332d..9e4c149 100644
--- a/core/modules/image/src/Tests/ImageFieldWidgetTest.php
+++ b/core/modules/image/src/Tests/ImageFieldWidgetTest.php
@@ -25,6 +25,7 @@ public function testWidgetElement() {
     $this->createImageField($field_name, 'article', array(), $field_settings, array(), array(), 'Image test on [site:name]');
     $this->drupalGet('node/add/article');
     $this->assertNotEqual(0, count($this->xpath('//div[contains(@class, "field--widget-image-image")]')), 'Image field widget found on add/node page', 'Browser');
+    $this->assertNotEqual(0, count($this->xpath('//input[contains(@accept, "image/*")]')), 'Image field widget limits accepted files.', 'Browser');
     $this->assertNoText('Image test on [site:name]');
   }
 
