Image Field

Example:

<?php
class Image_Fields_Widget extends WP_Widget {
     function __construct() {
         // Instantiate the parent object
         $widget_ops = array(
             'classname' => 'widget_image_fields_entries',
             'description' => esc_attr__('Image Field Widget - Created by deshisoft', 'eye-theme')
         );
         $control_ops = array(
             'width' => 275
         );
         parent::__construct( false, 'Image Field Widget', $widget_ops, $control_ops );
     }
     function widget( $args, $instance ) {
         extract( $args );
         // Widget output
         $title = apply_filters('widget_title', $instance['title']);
         $image_url = apply_filters('widget_image_url', $instance['image_url']);
         echo $before_widget;
         echo '<div style="border:1px solid #ddd; background:#f6f6f6;padding:15px;">';
         echo esc_attr($title);
         echo '<br/>';
         echo esc_attr($image_url);
         echo '</div>';
         echo $after_widget;
     }
     function update( $new_instance, $old_instance ) {
         // Save widget options
         $instance = array();
         $instance = $old_instance;
         $instance['title'] = strip_tags( $new_instance['title'] );
         $instance['image_url'] = strip_tags( $new_instance['image_url'] );
         return $instance;
     }
     function form( $instance ) {
         // Output admin widget options form
         $title = $instance['title'];
         $image_url = $instance['image_url']; ?>
        <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label>
        <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" /></p>
        <p>Image Uploader</p>
        <p><img class="custom_media_image" src="<?php if(!empty($image_url)){echo $image_url;} else { echo bloginfo('template_url').'/inc/no-image.gif';} ?>" style="padding:3px;border:1px solid #ddd;width:97%; display:inline-block" /><input type="text" class="widefat custom_media_url" name="<?php echo $this->get_field_name('image_url'); ?>" id="<?php echo $this->get_field_id('image_url'); ?>" value="<?php echo $image_url; ?>">
        <a href="#" class="button custom_media_upload"><?php _e('Upload', THEMENAME); ?></a></p>
        <script>
            // Image Upload
            (function($){
                 $('.custom_media_upload').click(function() {
                     var send_attachment_bkp = wp.media.editor.send.attachment;
                     var button = $(this);
                     wp.media.editor.send.attachment = function(props, attachment) {
                     $(button).prev().prev().attr('src', attachment.url);
                     $(button).prev().val(attachment.url);
                     wp.media.editor.send.attachment = send_attachment_bkp;
                 }
                 wp.media.editor.open(button);
                 return false;
             });
           })(jQuery);
        </script>
    <?php
   }
}
function image_field_register_widgets() {
    register_widget( 'Image_Fields_Widget' );
}
add_action( 'widgets_init', 'image_field_register_widgets' );
?>

Theme Folder -> function.php
Add this line:

require get_template_directory() . '/inc/image_widget.php';   // inc folder name depend on your theme.

Download Image Widget Field