Screenshot capture based on content type

Techniques for screenshot capture based on content type are described and are implementable to enable a screenshot of content displayed on a device to be captured based on a content type for the content. The described implementations, for instance, automatically determine a content type for content displayed on a device and capture a screenshot based on the content type, such as whether the content represents static content or dynamic content.

BACKGROUND

Today's person is afforded a tremendous selection of devices that are capable of performing a multitude of tasks. For instance, desktop and laptop computers provide computing power and screen space for productivity and entertainment tasks. Further, smartphones and tablets provide computing power and communication capabilities in highly portable form factors. In interacting with such devices users often encounter scenarios where they would like to capture an image of content displayed on a device, e.g., a screenshot of the content. Current implementations for capturing screenshots, however, demonstrate a number of drawbacks that result in user frustration and system resource wastage.

DETAILED DESCRIPTION

Techniques for screenshot capture based on content type are described and are implementable to enable a screenshot of content displayed on a device to be captured based on a content type for the content. Generally, the described implementations automatically determine a content type for content displayed on a device and capture a screenshot based on the content type. This provides for greater automation and user convenience than is provided by traditional techniques for capturing screenshots.

Conventional screenshot techniques typically have difficulty capturing screenshots of dynamic content, e.g., content such as animation and video. Due to complications in activating screenshot functionality in conventional techniques, for example, a user attempting to capture a screenshot of dynamic content will often miss portions of the dynamic content that the user wishes to capture. This causes user frustration and may result in a user abandoning an attempt to capture a screenshot of dynamic content. Alternatively, to capture dynamic content a user may record a video of the dynamic content. Capturing video content, however, is typically memory and storage intensive and results in excess usage of system resources.

Accordingly, in the described techniques, content type for content is automatically determined and utilized to determine how to capture a screenshot of the content. For instance, consider a scenario where a user is viewing content displayed on a device and wishes to capture a screenshot of the content. Accordingly, the user provides input to the device requesting a screenshot capture, such as via touch input (e.g., a specific gesture), pressing a button or set of buttons on the device, voice input, and so forth.

In response to the user request for a screenshot, a content type for the content is determined. For instance, it is determined if the content represents static content or dynamic content. Generally, static content represents content that includes static (e.g., unchanging) visual features, such as a still digital image. Dynamic content represents content with changing visual features, such as an animation and/or a digital video. Generally, content type for content is determinable in various ways, such as by querying a functionality of the device (e.g., a display manager, an application, an operating system, etc.). Alternatively or additionally, content type is determinable by inspecting attributes of content, such as by determining whether the content includes static or dynamic visual features.

Accordingly, utilizing the determined content type, a screenshot of the content is captured. For instance, when content is determined to be static content, a screenshot of the content is captured as a static screenshot. In another example when the content is determined to be dynamic content, a dynamic screenshot of the content is captured. For instance, for dynamic content, multiple candidate screenshots of the content are captured over time, such as to provide different candidate screenshots that depict changing visual attributes of the dynamic content. When the dynamic content represents an animation or a digital video, for example, the candidate screenshots depict changing visual attributes of the animation/digital video over time, such as over n seconds. Thus, the candidate screenshots are aggregateable into a dynamic screenshot, such as a media file that depicts a portion of dynamic content.

In at least one implementation, the described techniques provide functionality for enabling a user to provide guidance for generating a screenshot. For instance, where multiple candidate screenshots of dynamic content are captured, a guidance query is provided that queries a user for whether to generate a static screenshot and/or a dynamic screenshot using the candidate screenshots. In an example implementation where a user indicates to capture a static screenshot, candidate screenshots are presented to the user and the user is able to select an instance and/or instances of the candidate screenshots for generating a static screenshot and/or set of static screenshots. In an example implementation where a user indicates to capture a dynamic screenshot, candidate screenshots are presented to the user and the user is able to select a subset or all of the candidate screenshots for generating a dynamic screenshot. The selected candidate screenshots, for example, are aggregated (e.g., concatenated) into a media file that is presentable to depict changing visual attributes exhibited in the source dynamic content.

Accordingly, the described techniques enable screenshots of content to be captured based on content type without requiring manual interactions to specify content type for content.

While features and concepts of screenshot capture based on content type can be implemented in any number of environments and/or configurations, aspects the described techniques are described in the context of the following example systems, devices, and methods. Further, the systems, devices, and methods described herein are interchangeable in various ways to provide for a wide variety of implementations and operational scenarios.

FIG.1illustrates an example environment100in which aspects of screenshot capture based on content type can be implemented. The environment100includes a client device102which can be implemented in various ways and according to various form factors such as a smartphone, tablet device, a laptop computer, a desktop computer, a wearable computing device, and so forth.

The client device102includes various functionalities that enable the client device102to perform different aspects of screenshot capture based on content type discussed herein, including an operating system104, a display device106, a display manager108, applications110, and a screenshot module112. The operating system104represents functionality for managing hardware and software resources of the client device102, such as for invoking and enabling communication between hardware and software resources of the client device102. The display device106represents functionality for outputting visual content via the client device102and the display manager108represents functionality for controlling the display device106. The display manager108, for instance, provides display functionality for different processes of the client device102. In at least one implementation the display manager108includes a display driver for the display device106.

The applications110represent functionality for performing various tasks via the client device102such as productivity tasks, gaming, web browsing, social media, and so forth. The screenshot module112represents functionality for capturing screenshots114of content displayed on the display device106. A screenshot114, for instance, represents a digital content file that captures a representation of visual content displayed on the display device106and is stored as part of media files116of the client device102. In this particular example the screenshots114includes static screenshots118and dynamic screenshots120. The static screenshots118represent still digital images captured of content displayed on the display device106, and the dynamic screenshots120represent digital content captured of content displayed on the display device106that exhibit changing visual features, e.g., motion of visual objects included in the content. The dynamic screenshots120, for example, capture portions of animation, video content, and/or other digital content that includes changing visual features.

Further to the environment100a user implements functionality of the screenshot module112to capture a screenshot114aof display content122displayed on the display device106. Generally, the display content122represents various types of visual content output by the display device106, such as static content (e.g., still images), dynamic content (e.g., video content, animations, etc.), and so forth. In at least one implementation the display content122is generated by a functionality of the computing device (e.g., the applications110) and/or is received from a remote source, such as a network-based content source. For instance, in conjunction with display of the display content122on the display device106, a user provides input to invoke the screenshot module112and capture the screenshot114aof the display content122. Generally, the screenshot114arepresents an instance of a static screenshot118and/or a dynamic screenshot120. As further detailed below, for example, the screenshot114ais captured based on a content type for the display content122, e.g., whether the display content122represents static content or dynamic content. Further, the screenshot module112implements and exposes a screenshot graphical user interface (GUI)124that is utilized to expose and control various functionality of the screenshot module112. For instance, the screenshot GUI124is presented to enable a user to specify types of screenshots114to be captured (e.g., static and dynamic screenshots) as well as to select instances of screenshots114for storage as part of the media files116.

Having discussed an example environment in which the disclosed techniques can be performed, consider now some example scenarios and implementation details for implementing the disclosed techniques.

FIG.2depicts an example system200for implementing aspects of screenshot capture based on content type in accordance with one or more implementations. Generally, the system200can be implemented in the environment100and incorporates attributes of the environment100introduced above. In the system200the screenshot module112receives an indication of a screenshot action202to capture a screenshot of display content122displayed on the display device106. A user, for instance, provides input to the client device102to request that a screenshot of the display content122be captured.

Based on the screenshot action202the screenshot module112communicates a content query204that requests a content type for the display content122, e.g., whether the display content122is static content or dynamic content. The content query204can be communicated to a functionality of the client device102such as an application110(e.g., an application that generates the display content122), the operating system104, and/or the display manager108. Based on the content query204the screenshot module112receives a content response206that identifies a content type for the display content122. The content response206, for example, indicates whether the display content122is static content or dynamic content. Generally, the content response206can be received from a functionality of the client device102such as an application110(e.g., an application that generates the display content122), the operating system104, and/or the display manager108.

Accordingly, based on a content type identified in the content response206, the screenshot module112performs a screenshot capture208of the display content122. The display manager108, for example, provides the screenshot module112with access to the display content122for purposes of the screenshot capture208. Generally, the screenshot capture208includes a static screenshot118and/or a dynamic screenshot120. For instance, in an implementation where the content response206identifies the display content122as static content, the screenshot capture208captures the display content122as a static screenshot118. In an implementation where the content response206identifies the display content122as dynamic content, the screenshot capture208can capture the display content122as a dynamic screenshot120.

In at least one implementation, in conjunction with the screenshot capture208, the screenshot module112generates and outputs a guidance query210that prompts a user to provide guidance for capturing a screenshot. For instance, in an implementation where the display content122represents dynamic content, the screenshot capture208captures candidate screenshots212of the display content122. The candidate screenshots212, for instance, represent screenshots captured over a period of time. Accordingly, the guidance query210queries a user for guidance in determining how to generate a screenshot based on the candidate screenshots212. For instance, and as detailed below, a static screenshot118and/or a dynamic screenshot120can be generated via selection of a candidate screenshot212and/or a set of candidate screenshots212.

In an implementation that utilizes the guidance query210, the screenshot module112receives a query response214that indicates parameters for capturing a screenshot, such as whether to capture a static screenshot118and/or a dynamic screenshot120. Further, the query response214can identify a candidate screenshot212and/or set of candidate screenshots212to be used to generate a screenshot. Accordingly, based on the screenshot capture208(and optionally the query response214) the screenshot module112provides screenshot output216that represents an instance of a static screenshot118and/or a dynamic screenshot120.

FIG.3adepicts a scenario300afor presenting a guidance query in conjunction with capturing a screenshot in accordance with one or more implementations. In the scenario300athe screenshot GUI124is output to include an instance of the guidance query210, such as introduced above with reference to the system200. The screenshot GUI124with the guidance query210, for example, is output on the display device106in conjunction with (e.g., concurrently and/or after) executing the screenshot capture208.

The guidance query210includes a notification that an active screenshot has been captured and queries a user as to whether the user would like to generate a static screenshot (a “still”) or a dynamic (“active”) screenshot. Further, the guidance query210includes a preview302of the captured screenshot. Accordingly, to enable a user to specify a type of screenshot to be captured, the guidance query210includes a static selectable control304and a dynamic selectable control306. The static selectable control304is selectable to enable a static screenshot118to be generated from the captured dynamic screenshot and the dynamic selectable control306is selectable to enable a dynamic screenshot120to be generated from the captured dynamic screenshot.

FIG.3bdepicts a scenario300bfor generating a static screenshot in accordance with one or more implementations. The scenario300b, for instance, represents a continuation of the scenario300aand is implemented in response to selection of the static selectable control304. In the scenario300bmultiple candidate screenshots308are output including a candidate screenshot308a, a candidate screenshot308b, a candidate screenshot308c, and a candidate screenshot308n. The candidate screenshots308, for example, are output as part of the screenshot GUI124. Accordingly, to generate a static screenshot118, a user performs a still selection310by selecting an instance of the candidate screenshots308. Based on the still selection310the screenshot module112generates a static screenshot118. The static screenshot118, for instance, represents a still digital image generated from a selected candidate screenshot308.

FIG.3cdepicts a scenario300cfor generating a dynamic screenshot in accordance with one or more implementations. The scenario300c, for instance, represents a continuation of the scenario300aand is implemented in response to selection of the dynamic selectable control306. In the scenario300cmultiple candidate screenshots312are output including a candidate screenshot312a, a candidate screenshot312b, a candidate screenshot312c, and a candidate screenshot312n. The candidate screenshots312, for example, are output as part of the screenshot GUI124. Accordingly, to generate a dynamic screenshot120, a user performs an active selection314by selecting instances of the candidate screenshots312. Generally, the user can select all of the candidate screenshots312or a subset (less than all) of the candidate screenshots312. Based on the active selection314the screenshot module112generates a dynamic screenshot120. The dynamic screenshot120, for instance, represents multiple of the candidate screenshots312selected by a user. In at least one implementation the screenshot module112generates the dynamic screenshot120by aggregating the selected candidate screenshots312into a media file116that can be output to present the selected candidate screenshots312with visual motion, such as a Graphics Interchange Format (GIF) file.

FIG.4illustrates a flow chart depicting an example method400for capturing a screenshot based on content type in accordance with one or more implementations. At402an indication is received to capture a screenshot of visual content displayed on a display device. A user, for instance, provides input to the client device102requesting that a screenshot be captured of content displayed on the display device106. Generally, different types and forms of input can be utilized to request a screenshot, such as touch input to the display device106(e.g., a predetermined screenshot gesture), selecting one or more buttons of the client device102, voice input, and so forth.

At404it is determined whether the visual content represents static visual content or dynamic visual content. The screenshot module112, for example, determines whether content being displayed on the display device106represents static visual content (e.g., a still image) or dynamic visual content, such as a video, an animation, and/or other visual content that exhibits changing visual attributes over time. Generally, determining whether visual content is static content or dynamic content can be performed in various ways. For instance, the screenshot module112can query a functionality of the client device for a content type, such as the display manager108, the operating system104, an application110, and so forth. Accordingly, the queried functionality can respond with a content type for the visual content. Alternatively a functionality of the client device102can proactively notify the screenshot module112of a content type, e.g., independent of a query from the screenshot module112.

In an alternative or additional implementation the screenshot module112captures multiple candidate screenshots of visual content and compares the candidate screenshots to determine whether the candidate screenshots include static visual features and thus represent static visual content, or whether the candidate screenshots exhibit changing visual features and thus represent dynamic visual content.

In an event that the visual content represents static visual content, at406the visual content is captured as a static screenshot. The screenshot module112, for example, captures a screenshot of the visual content as a still image. In an event that the visual content represents dynamic visual content, at408the visual content is captured as a dynamic screenshot. For instance, the screenshot module112captures the visual content as visual content that exhibits changing visual features, e.g., an animation file. At410editing of the captured screenshot is enabled. For instance, the screenshot module112and/or other functionality of the client device102presents an editing experience that enables a user to edit the captured screenshot, such as to edit visual attributes of the captured screenshot. In an implementation where a dynamic screenshot is captured, the editing experience can enable a user to edit a playback length of the dynamic screenshot.

FIG.5illustrates a flow chart depicting an example method500for capturing a screenshot utilizing candidate screenshots in accordance with one or more implementations. The method500, for instance, is performed in conjunction with the method400, such as to determine whether to capture a screenshot as a static screenshot or a dynamic screenshot. At502candidate screenshots of visual content are captured. For instance, in response to user input requesting that a screenshot be captured, the screenshot module112captures multiple candidate screenshots of visual content displayed on the display device106. In at least one implementation the multiple candidate screenshots are captured over a specified period of time, e.g., t seconds. The specified period t can be defined by a system setting of the screenshot module112and/or can be user customized, such as based on user configuration of settings of the screenshot module112.

For instance, in response to user input requesting a screenshot, the screenshot module112captures a candidate screenshot at intervals of i and for the period of time t. Generally, i is definable in various ways, such as time divisions of t, as groups of frames based on a frame rate of the display device106, etc. In at least one implementation the candidate screenshots include screenshots of visual content that is output prior to receiving a request to capture a screenshot. The display manager108, for instance, buffers display content122such that display content that is output prior to a request to capture a screenshot (e.g., prior to the screenshot action202) is available in a buffer and can be used to generate candidate screenshots.

At504visual features of the candidate screenshots are compared. The screenshot module112, for example, compares visual features of each of the candidate screenshots to one another. Generally, different visual features are comparable such as visual objects included in the candidate screenshots, color features of the candidate screenshots (e.g., colors, brightness, contrast, etc.), image aspect ratio of visual features included in the candidate screenshots, and so forth.

At506it is determined based on comparing the visual features whether the candidate screenshots include duplicate visual features or varying visual features. The screenshot module112, for example, determines whether the candidate screenshots include the same visual features or varying visual features. For instance, if each candidate screenshot includes the same (e.g., unchanging) visual features the candidate screenshots are determined to include duplicate visual features. If some of the candidate screenshots include differing (e.g., changing) visual features the candidate screenshots are determined to including varying visual features. For example, in an implementation where the candidate screenshots capture motion of a visual object from visual content, position and/or orientation of the visual object will vary among at least some of the candidate screenshots.

In an event that the candidate screenshots include duplicate visual features, at508it is determined that the visual content represents static visual content. The screenshot module112, for example, determines that the candidate screenshots include duplicate visual features and thus that the visual content represents static visual content. In an event that the candidate screenshots include varying visual features, at510it is determined that the visual content represents dynamic visual content. The screenshot module112, for example, determines that the candidate screenshots include varying visual features and thus that the visual content represents dynamic visual content. At512a screenshot is captured based on the determined content type. For instance, when the visual content is determined to be static content, a static screenshot is captured and when the visual content is determined to be dynamic content, a dynamic screenshot is captured.

FIG.6illustrates a flow chart depicting an example method600for enabling user input for capturing a screenshot utilizing candidate screenshots in accordance with one or more implementations. The method600, for instance, is performed in conjunction with the method400and/or the method500. At602it is determined whether candidate screenshots represent static content or dynamic content. The screenshot module112, for example, captures candidate screenshots of visual content and determines whether the candidate screenshots include static visual content or dynamic visual content, such as described above.

In an event that the candidate screenshots represent static content (“Static”), at604a graphical user interface is presented that includes the candidate screenshots. For instance, the screenshot module112presents the screenshot GUI124including the candidate screenshots. At606a selection of an instance of a candidate screenshot is received. A user, for instance, provides input the screenshot GUI124to select a particular candidate screenshot. At608a static screenshot is generated using the instance of the candidate screenshot. The screenshot module112, for example, generates a static screenshot118using the selected candidate screenshot. In at least one implementation a user is able to select multiple candidate screenshots and each selected candidate screenshot is utilized to generate an instance of a static screenshot118.

In an event that the candidate screenshots represent dynamic content (“Dynamic”), at610a graphical user interface is presented that includes the candidate screenshots. For instance, the screenshot module112presents the screenshot GUI124including the candidate screenshots. At612a selection of a subset of candidate screenshots is received. A user, for instance, provides input the screenshot GUI124to select a group of candidate screenshots. At614a dynamic screenshot is generated using the subset of candidate screenshots. The screenshot module112, for example, generates a dynamic screenshot120using the selected candidate screenshots. In at least one implementation the screenshot module112concatenates the subset of candidate screenshots to generate the dynamic screenshot, such as in the form of a GIF file and/or other media file that exhibits motion and/or other dynamic visual features when output.

FIG.7illustrates a flow chart depicting an example method700for enabling user input for selecting a screenshot type in accordance with one or more implementations. The method700, for instance, is performed in conjunction with the methods400-600. At702a guidance query is presented requesting whether to generate a static screenshot or a dynamic screenshot using candidate screenshots. The screenshot module112, for example, captures candidate screenshots of dynamic visual content and presents the guidance query210to enable a user to specify whether to generate a static screenshot or a dynamic screenshot using the candidate screenshots.

At704user input is received to select to generate a static screenshot or a dynamic screenshot. The screenshot module112, for example, detects that a user provides input to the guidance query210to select either a static screenshot option or a dynamic screenshot option. At706a static screenshot or a dynamic screenshot is generated based on a response to the guidance query. For instance, the screenshot module112generates a static screenshot or a dynamic screenshot based on whether a static screenshot option or a dynamic screenshot option is selected. As detailed throughout, a static screenshot can be generated via selection of an instance of a candidate screenshot and a dynamic screenshot can be generated using multiple candidate screenshots, such as a subset of candidate screenshots selected by a user.

FIG.8illustrates a flow chart depicting an example method800for enabling automated selection of a screenshot in accordance with one or more implementations. The method800, for instance, is performed in conjunction with the methods400-700. At802candidate screenshots of visual content are captured. As described above, for example, the screenshot module112captures candidate screenshots of visual content, such as static visual content and/or dynamic visual content.

At804the candidate screenshots are compared to determine a visual quality for each candidate screenshot of the candidate screenshots. For instance, the screenshot module112implements an image quality algorithm and/or set of algorithms to determine image quality for each of the candidate screenshots. Generally, determining image quality considers various image quality parameters, such as image focus (e.g., blurriness), color contrast, image luminance, visual object positioning (e.g., centering), and so forth. In example implementations where candidate screenshots include an image of a human, image quality parameters include human appearance attributes such as eye position (e.g., whether human eyes are open or closed), smile detection, eye gaze direction, and so forth.

In at least one implementation, for each candidate screenshot, an image quality score is generated by assigning values for a set of image quality parameters for the candidate screenshot. For instance, a machine learning algorithm is trained using a training set of images to process input digital images and generate quality scores for the input digital images. Thus, a set of candidate screenshots can be input to the machine learning algorithm and the machine learning algorithm can output a quality score for each candidate screenshot.

At806a static screenshot is generated using a candidate screenshot that exhibits a highest visual quality of the candidate screenshots. For instance, in a scenario where a quality score is generated for each candidate screenshot, a candidate screenshot with a highest quality score is selected and used to generate a static screenshot. Alternatively or additionally a subset of candidate screenshots with the highest quality scores are output and a user selects a preferred candidate screenshot and/or set of candidate screenshots from the subset for generating a static screenshot and/or set of static screenshots.

Accordingly, the described implementations provide automated techniques for capturing screenshots based on content type and that overcome deficiencies experienced in conventional techniques, such as the inability to accurately capture screenshots of dynamic content.

The example methods described above may be performed in various ways, such as for implementing different aspects of the systems and scenarios described herein. Generally, any services, components, modules, methods, and/or operations described herein can be implemented using software, firmware, hardware (e.g., fixed logic circuitry), manual processing, or any combination thereof. Some operations of the example methods may be described in the general context of executable instructions stored on computer-readable storage memory that is local and/or remote to a computer processing system, and implementations can include software applications, programs, functions, and the like. Alternatively or in addition, any of the functionality described herein can be performed, at least in part, by one or more hardware logic components, such as, and without limitation, Field-programmable Gate Arrays (FPGAs), Application-specific Integrated Circuits (ASICs), Application-specific Standard Products (ASSPs), System-on-a-chip systems (SoCs), Complex Programmable Logic Devices (CPLDs), and the like. The order in which the methods are described is not intended to be construed as a limitation, and any number or combination of the described method operations can be performed in any order to perform a method, or an alternate method.

FIG.9illustrates various components of an example device900in which aspects of screenshot capture based on content type can be implemented. The example device900can be implemented as any of the devices described with reference to the previousFIGS.1-8, such as any type of mobile device, mobile phone, mobile device, wearable device, tablet, computing, communication, entertainment, gaming, media playback, and/or other type of electronic device. For example, the client device102as shown and described with reference toFIGS.1-8may be implemented as the example device900.

The device900includes communication transceivers902that enable wired and/or wireless communication of device data904with other devices. The device data904can include any of device identifying data, device location data, wireless connectivity data, and wireless protocol data. Additionally, the device data904can include any type of audio, video, and/or image data. Example communication transceivers902include wireless personal area network (WPAN) radios compliant with various IEEE 902.15 (Bluetooth™) standards, wireless local area network (WLAN) radios compliant with any of the various IEEE 902.11 (Wi-Fi™) standards, wireless wide area network (WWAN) radios for cellular phone communication, wireless metropolitan area network (WMAN) radios compliant with various IEEE 902.16 (WiMAX™) standards, and wired local area network (LAN) Ethernet transceivers for network data communication.

The device900may also include one or more data input ports906via which any type of data, media content, and/or inputs can be received, such as user-selectable inputs to the device, messages, music, television content, recorded content, and any other type of audio, video, and/or image data received from any content and/or data source. The data input ports may include USB ports, coaxial cable ports, and other serial or parallel connectors (including internal connectors) for flash memory, DVDs, CDs, and the like. These data input ports may be used to couple the device to any type of components, peripherals, or accessories such as microphones and/or cameras.

The device900includes a processing system908of one or more processors (e.g., any of microprocessors, controllers, and the like) and/or a processor and memory system implemented as a system-on-chip (SoC) that processes computer-executable instructions. The processor system may be implemented at least partially in hardware, which can include components of an integrated circuit or on-chip system, an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a complex programmable logic device (CPLD), and other implementations in silicon and/or other hardware. Alternatively or in addition, the device can be implemented with any one or combination of software, hardware, firmware, or fixed logic circuitry that is implemented in connection with processing and control circuits, which are generally identified at910. The device900may further include any type of a system bus or other data and command transfer system that couples the various components within the device. A system bus can include any one or combination of different bus structures and architectures, as well as control and data lines.

The device900also includes computer-readable storage memory912(e.g., memory devices) that enable data storage, such as data storage devices that can be accessed by a computing device, and that provide persistent storage of data and executable instructions (e.g., software applications, programs, functions, and the like). Examples of the computer-readable storage memory912include volatile memory and non-volatile memory, fixed and removable media devices, and any suitable memory device or electronic data storage that maintains data for computing device access. The computer-readable storage memory can include various implementations of random access memory (RAM), read-only memory (ROM), flash memory, and other types of storage media in various memory device configurations. The device900may also include a mass storage media device.

The computer-readable storage memory912provides data storage mechanisms to store the device data904, other types of information and/or data, and various device applications914(e.g., software applications). For example, an operating system916can be maintained as software instructions with a memory device and executed by the processing system908. The device applications may also include a device manager, such as any form of a control application, software application, signal-processing and control module, code that is native to a particular device, a hardware abstraction layer for a particular device, and so on. Computer-readable storage memory912represents media and/or devices that enable persistent and/or non-transitory storage of information in contrast to mere signal transmission, carrier waves, or signals per se. Computer-readable storage memory912do not include signals per se or transitory signals.

In this example, the device900includes a screenshot module918that implements aspects of screenshot capture based on content type and may be implemented with hardware components and/or in software as one of the device applications914. For example, the screenshot module918can be implemented as the screenshot module112described in detail above. In implementations, the screenshot module918may include independent processing, memory, and logic components as a computing and/or electronic device integrated with the device900. The device900also includes screenshot data920for implementing aspects of screenshot capture based on content type and may include data from the screenshot module918, such as instances of captured screenshots.

In this example, the example device900also includes a camera922and motion sensors924, such as may be implemented in an inertial measurement unit (IMU). The motion sensors924can be implemented with various sensors, such as a gyroscope, an accelerometer, and/or other types of motion sensors to sense motion of the device. The various motion sensors924may also be implemented as components of an inertial measurement unit in the device.

The device900also includes a wireless module926, which is representative of functionality to perform various wireless communication tasks. For instance, for the client device102, the wireless module926can be leveraged to scan for and detect wireless networks, as well as negotiate wireless connectivity to wireless networks for the client device102. The device900can also include one or more power sources928, such as when the device is implemented as a mobile device. The power sources928may include a charging and/or power system, and can be implemented as a flexible strip battery, a rechargeable battery, a charged super-capacitor, and/or any other type of active or passive power source.

The device900also includes an audio and/or video processing system930that generates audio data for an audio system932and/or generates display data for a display system934. The audio system and/or the display system may include any devices that process, display, and/or otherwise render audio, video, display, and/or image data. Display data and audio signals can be communicated to an audio component and/or to a display component via an RF (radio frequency) link, S-video link, HDMI (high-definition multimedia interface), composite video link, component video link, DVI (digital video interface), analog audio connection, or other similar communication link, such as media data port936. In implementations, the audio system and/or the display system are integrated components of the example device. Alternatively, the audio system and/or the display system are external, peripheral components to the example device.

Although implementations of screenshot capture based on content type have been described in language specific to features and/or methods, the subject of the appended claims is not necessarily limited to the specific features or methods described. Rather, the features and methods are disclosed as example implementations, and other equivalent features and methods are intended to be within the scope of the appended claims. Further, various different examples are described and it is to be appreciated that each described example can be implemented independently or in connection with one or more other described examples. Additional aspects of the techniques, features, and/or methods discussed herein relate to one or more of the following:

In some aspects, the techniques described herein relate to a computing device including: one or more display devices; and one or more modules implemented at least in part in hardware of the computing device to: receive an indication to capture a screenshot of visual content displayed on the one or more display devices; determine whether the visual content represents static visual content or dynamic visual content; capture the visual content as a static screenshot in an event that the visual content represents static visual content; and capture the visual content as a dynamic screenshot in an event that the visual content represents dynamic visual content.

In some aspects, the techniques described herein relate to a computing device, wherein to determine whether the visual content represents static visual content or dynamic visual content includes to communicate a query to a functionality of the computing device and receive a query response identifying whether the visual content represents static visual content or dynamic visual content.

In some aspects, the techniques described herein relate to a computing device, wherein functionality of the computing device includes one or more of a display manager, an operating system, or an application.

In some aspects, the techniques described herein relate to a computing device, wherein to determine whether the visual content represents static visual content or dynamic visual content includes to: capture multiple candidate screenshots of the visual content; compare the multiple candidate screenshots to determine whether the multiple candidate screenshots include duplicate visual content or varying visual content; determine that the visual content represents static visual content in an event that the multiple candidate screenshots include duplicate visual content; and determine that the visual content represents dynamic visual content in an event that the multiple candidate screenshots include varying visual content.

In some aspects, the techniques described herein relate to a computing device, wherein to capture the visual content as a static screenshot includes to: capture multiple candidate screenshots of the visual content; present a graphical user interface that includes the multiple candidate screenshots; receive a selection of an instance of a candidate screenshot from the multiple candidate screenshots; and generate the static screenshot using the instance of the candidate screenshot.

In some aspects, the techniques described herein relate to a computing device, wherein to capture the visual content as a static screenshot includes to: capture multiple candidate screenshots of the visual content; compare the multiple candidate screenshots to determine a visual quality for each candidate screenshot of the multiple candidate screenshots; and generate the static screenshot using a candidate screenshot that exhibits a highest visual quality of the multiple candidate screenshots.

In some aspects, the techniques described herein relate to a computing device, wherein to capture the visual content as a dynamic screenshot includes to capture multiple candidate screenshots of the visual content including one or more candidate screenshots of one or more portions of the visual content presented on the one or more display devices prior to receipt of the indication to capture the screenshot.

In some aspects, the techniques described herein relate to a computing device, wherein to capture the visual content as a dynamic screenshot includes to: capture multiple candidate screenshots of the visual content; present a graphical user interface that includes the multiple candidate screenshots; receive a selection of a subset of candidate screenshots from the multiple candidate screenshots; and generate the dynamic screenshot using the subset of candidate screenshots.

In some aspects, the techniques described herein relate to a computing device, wherein the one or more modules are further implemented to: capture multiple candidate screenshots of the visual content; present a guidance query requesting whether to generate the static screenshot using an instance of a candidate screenshot of the multiple candidate screenshots or to generate the dynamic screenshot using multiple candidate screenshots; and generate one of the static screenshot or the dynamic screenshot based on a response to the guidance query.

In some aspects, the techniques described herein relate to a method, including: receiving an indication to capture a screenshot of content displayed on one or more display devices of a computing device; determining whether the content represents static visual content or dynamic visual content; capturing a screenshot of the content based on whether the content represents static visual content or dynamic visual content, including: capturing the content as a static screenshot in an event that the content represents static content; or capturing the content as a dynamic screenshot in an event that the content represents dynamic content.

In some aspects, the techniques described herein relate to a method, wherein the determining whether the visual content represents static visual content or dynamic visual content includes communicating a query to a functionality of the computing device and receiving a query response identifying whether the visual content represents static visual content or dynamic visual content.

In some aspects, the techniques described herein relate to a method, wherein the determining whether the visual content represents static visual content or dynamic visual content includes: capturing multiple candidate screenshots of the visual content; comparing the multiple candidate screenshots to determine whether the multiple candidate screenshots include duplicate visual content or varying visual content; determining that the visual content represents static visual content in an event that the multiple candidate screenshots include duplicate visual content; or determining that the visual content represents dynamic visual content in an event that the multiple candidate screenshots include varying visual content.

In some aspects, the techniques described herein relate to a method, wherein the capturing the content as a static screenshot includes: capturing multiple candidate screenshots of the visual content; comparing the multiple candidate screenshots to determine a visual quality for each candidate screenshot of the multiple candidate screenshots; and generating the static screenshot using a candidate screenshot that exhibits a highest visual quality of the multiple candidate screenshots.

In some aspects, the techniques described herein relate to a method, wherein the capturing the visual content as a dynamic screenshot includes capturing multiple candidate screenshots of the visual content including one or more candidate screenshots of the visual content presented on the one or more display devices prior to receipt of the indication to capture the screenshot.

In some aspects, the techniques described herein relate to a method, further including: capturing multiple candidate screenshots of the visual content; presenting a guidance query requesting whether to generate the static screenshot using an instance of a candidate screenshot of the multiple candidate screenshots or to generate the dynamic screenshot using multiple candidate screenshots; and generating one of the static screenshot or the dynamic screenshot based on a response to the guidance query.

In some aspects, the techniques described herein relate to a system including: one or more processors implemented at least partially in hardware; and one or more computer-readable storage media storing instructions that are executable by the one or more processors to: receive an indication to capture a screenshot of visual content displayed on one or more display devices of a computing device; capture multiple candidate screenshots of the visual content; compare the multiple candidate screenshots to determine whether the multiple candidate screenshot include duplicate visual content or varying visual content; generate a static screenshot of the visual content in an event that the multiple candidate screenshots include duplicate visual content; and generate a dynamic screenshot of the visual content in an event that the multiple candidate screenshots include varying visual content.

In some aspects, the techniques described herein relate to a system, wherein to capture the multiple candidate screenshots of the visual content includes to capture one or more of the candidate screenshots using one or portions of the visual content output one the one or more display devices prior to receipt of the indication to capture the screenshot of the visual content.

In some aspects, the techniques described herein relate to a system, wherein to capture the multiple candidate screenshots of the visual content includes to capture one or more of the candidate screenshots using one or portions of the visual content output one the one or more display devices during a predetermined time duration prior to receipt of the indication to capture the screenshot of the visual content.

In some aspects, the techniques described herein relate to a system, wherein the instructions that are further executable by the one or more processors to: capture multiple candidate screenshots of the visual content; present a guidance query requesting whether to generate the static screenshot using an instance of a candidate screenshot of the multiple candidate screenshots or to generate the dynamic screenshot using multiple candidate screenshots; and generate one of the static screenshot or the dynamic screenshot based on a response to the guidance query.

In some aspects, the techniques described herein relate to a system, wherein to generate the dynamic screenshot includes to: present a graphical user interface that includes the multiple candidate screenshots; receive a selection of a subset of candidate screenshots from the multiple candidate screenshots; and generate the dynamic screenshot using the subset of candidate screenshots.