CN115373568A - 一种代码截图方法、装置、设备及介质 - Google Patents
一种代码截图方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN115373568A CN115373568A CN202211131429.5A CN202211131429A CN115373568A CN 115373568 A CN115373568 A CN 115373568A CN 202211131429 A CN202211131429 A CN 202211131429A CN 115373568 A CN115373568 A CN 115373568A
- Authority
- CN
- China
- Prior art keywords
- screenshot
- codes
- code
- cursor
- target method
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/04842—Selection of displayed objects or displayed text elements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本申请涉及数据处理技术领域,提供一种代码截图方法、装置、设备及介质。通过接收用户发出的截图指令,截图指令中包括目标方法的方法名称;获取与方法名称相对应的目标方法的全部代码;获取光标选中代码在目标方法的全部代码中的第一起始位置和第一结束位置;根据全部代码、第一起始位置和第一结束位置,调用内容转图片工具,采用不同的渲染样式分别对第一起始位置和第一结束位置之间的光标选中代码和目标方法的全部代码中除光标选中代码之外的其他代码进行渲染,以生成截图图片。利用本申请,能够减少截图操作步骤,只需两步就能够方便快捷完成对方法代码的截图和对方法代码中有问题代码行的标记。
Description
技术领域
本申请计算机技术领域,特别涉及一种代码截图方法、装置、设备及介质。
背景技术
在编码软件中代码编程、调试时,当某个方法的某行代码有问题时,会针对该方法进行截图,然后在图上面针对有问题的那行代码标识出来,图形画好之后既可以点击截图完成按钮,完成截图操作。
现有的截图工具(例如电脑自带的截图工具、QQ截图或微信截图)截图功能不太友好,截图步骤繁琐,对于开发人员来说的确不太顺手,不太方便。以QQ截图为例,先是通过″Ctrl+Alt+A″启动快捷键功能,然后用鼠标画一块选中区域,然后用鼠标框选有问题代码进行标记,最后点击″完成″按钮,另外,通常在选中截图区域、鼠标框选时是需要进行多次调整,故而整个截图操作步骤多,远远不能满足开发人员对于快速截图的诉求。
发明内容
鉴于以上所述现有技术的缺点,本申请的目的在于提供一种代码截图方法、装置、设备及介质,用于解决现有技术中的截图工具截图功能不友好,截图步骤繁琐,对于程序开发人员不顺手、不方便的技术问题。
第一方面,提供了一种代码截图方法,应用于编码软件,所述编码软件中安装有截图插件,所述方法包括:
接收用户发出的截图指令,所述截图指令中包括目标方法的方法名称;
获取与所述方法名称相对应的所述目标方法的全部代码;
获取光标选中代码在所述目标方法的全部代码中的第一起始位置和第一结束位置;
根据所述全部代码、所述第一起始位置和所述第一结束位置,调用内容转图片工具,分别采用不同的渲染样式对所述第一起始位置和所述第一结束位置之间的所述光标选中代码和所述目标方法的全部代码中除所述光标选中代码之外的其他代码进行渲染,以生成截图图片。
第二方面,提供了一种代码截图装置,应用于编码软件,所述编码软件中安装有截图插件,该装置包括:
触发指令接收模块,用于接收用户发出的截图指令,所述截图指令中包括目标方法的方法名称;
全部代码获取模块,用于获取与所述方法名称相对应的所述目标方法的全部代码;
光标位置获取模块,用于获取光标选中代码在所述目标方法的全部代码中的第一起始位置和第一结束位置;
截图图片生成模块,用于根据所述全部代码、所述第一起始位置和所述第一结束位置,调用内容转图片工具,分别采用不同的渲染样式对所述第一起始位置和所述第一结束位置之间的所述光标选中代码和所述目标方法的全部代码中除所述光标选中代码之外的其他代码进行渲染,以生成截图图片。
第三方面,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述代码截图方法的步骤。
第四方面,提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现上述代码截图方法的步骤。
如上所述,本申请提供一种代码截图方法、装置、设备及介质,应用于编码软件,所述编码软件中安装有截图插件,本申请首先接收用户发出的截图指令,所述截图指令中包括目标方法的方法名称;然后获取与所述方法名称相对应的所述目标方法的全部代码;再获取光标选中代码在所述目标方法的全部代码中的第一起始位置和第一结束位置;最后根据所述全部代码、所述第一起始位置和所述第一结束位置,调用内容转图片工具,分别采用不同的渲染样式对所述第一起始位置和所述第一结束位置之间的所述光标选中代码和所述目标方法的全部代码中除所述光标选中代码之外的其他代码进行渲染,以生成截图图片。在执行截图时,用户只需要先选中有问题的代码行,然后通过点击截图图标或按下快捷键的方式来触发截图指令,截图插件就可以根据截图指令来完成截图操作,从而减少截图操作,只需两步就能够方便快捷完成对方法代码的截图和对方法代码中有问题代码行的标记。并且,由于是先获取目标方法的全部代码、光标选中代码在目标方法的全部代码中第一起始位置和所述第一结束位置等三个信息,再基于获取的三个信息调用内容转图片工具生成截图图片,能够对代码被遮挡的情形进行截图。
附图说明
图1示出了应用本申请中一个或多个实施例中技术方案的示例性系统架构的示意图。
图2本申请的代码截图方法的一流程示意图。
图3本申请的代码截图操作示意图。
图4示出了代码被遮挡的情形。
图5示出了本申请的代码截图装置的一功能模块图。
图6示出了本申请的代码截图方法的电子设备的一结构示意图。
具体实施方式
以下通过特定的具体实例说明本申请的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本申请的其他优点与功效。本申请还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本申请的精神下进行各种修饰或改变。
请参阅图1-6。需要说明的是,本实施例中所提供的图示仅以示意方式说明本申请的基本构想,遂图式中仅显示与本申请中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
图1示出了一种可以应用本申请中一个或多个实施例中技术方案的示例性系统架构的示意图。如图1所示,系统架构100可以包括终端设备110、网络120和服务器130。终端设备110可以包括智能手机、平板电脑、笔记本电脑、台式电脑等各种电子设备。服务器130可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器。网络120可以是能够在终端设备110和服务器130之间提供通信链路的各种连接类型的通信介质,例如可以是有线通信链路或者无线通信链路。
根据实现需要,本申请实施例中的系统架构可以具有任意数目的终端设备、网络和服务器。例如,服务器130可以是由多个服务器设备组成的服务器群组。另外,本申请实施例提供的技术方案可以应用于终端设备110,也可以应用于服务器130,或者可以由终端设备110和服务器130共同实施,本申请对此不做特殊限定。
在本申请的一个实施例中,本申请的终端设备110或服务器130可以首先接收用户发出的截图指令,所述截图指令中包括目标方法的方法名称;然后获取与所述方法名称相对应的所述目标方法的全部代码;再获取光标选中代码在所述目标方法的全部代码中的第一起始位置和第一结束位置;最后根据所述全部代码、所述第一起始位置和所述第一结束位置,调用内容转图片工具,分别采用不同的渲染样式对所述第一起始位置和所述第一结束位置之间的所述光标选中代码和所述目标方法的全部代码中除所述光标选中代码之外的其他代码进行渲染,以生成截图图片。在执行截图时,用户只需要先选中有问题的代码行,然后通过点击截图图标或按下快捷键的方式来触发截图指令,截图插件就可以根据截图指令来完成截图操作,从而减少截图操作,只需两步就能够方便快捷完成对方法代码的截图和对方法代码中有问题代码行的标记。
以上部分介绍了应用本申请技术方案的示例性系统架构的内容,接下来继续介绍本申请的代码截图方法。
图2示出了本申请一实施例提供的代码截图方法流程示意图。具体地,在一示例性实施例中,如图2所示,本实施例提供一种代码截图方法,应用于编码软件,所述编码软件中安装有截图插件,该方法包括以下步骤:
S210:接收用户发出的截图指令,所述截图指令中包括目标方法的方法名称;
S220:获取与所述方法名称相对应的所述目标方法的全部代码;
S230:获取光标选中代码在所述目标方法的全部代码中的第一起始位置和第一结束位置;
S240:根据所述全部代码、所述第一起始位置和所述第一结束位置,调用内容转图片工具,分别采用不同的渲染样式对所述第一起始位置和所述第一结束位置之间的所述光标选中代码和所述目标方法的全部代码中除所述光标选中代码之外的其他代码进行渲染,以生成截图图片。
在本实施例中,编程软件可以是IntelliJ IDEA软件,在IntelliJ IDEA软件上进行代码截图时,需要预先开发IntelliJ IDEA截图插件,并将截图插件安装到IntelliJIDEA软件里面。当然,编程软件也可以是Eclipse软件、VSCode软件等,只需要对应Eclipse软件、VSCode软件版本的截图插件,并安装既可实现代码截图。
在IntelliJ IDEA编码软件中安装了IntelliJ IDEA截图插件后,IntelliJ IDEA编码软件提供一种让插件绘制图形的能力,因此,截图插件也自然用来绘制截图图标的能力,从而可以在相应的方法上生成截图图标,并将所述截图图标与对应的所述目标方法进行关联。该截图图标可以生成在方法的起始位置或结束位置,或者方法的起始位置与结束位置之间的任一位置,譬如方法的起始位置。该截图图标的图标样式可以根据实际需要进行选择,例如可以是图3所示的照相机小图标。
可以理解的是,该截图图标也可以放在其他想要放置的位置,也可以多放置几个图标,譬如在方法上放置截图图标后,还可以在屏幕的右下角放置一个截图图标来辅助截图整个屏幕。
当用户选择有问题的代码行(例如图3中黑色矩形框中圈出的被选中的两行代码)后,可以通过鼠标(实体鼠标或触控鼠标)点击截图图标(图3中的照相机小图标),截图图标感应到鼠标点击事件后,就说明用户触发了截图功能,从而生成截图指令,该截图指令中选中代码所在目标方法的方法名称(public static void main);接收到该截图指令后,就可以调用截图插件,根据该方法名称就可以获得该目标方法的全部代码;并且还可以获取光标选中代码在所述目标方法的全部代码中的第一起始位置和第一结束位置,将可以获取与所述方法名称相对应的所述目标方法的全部代码,以及光标选中代码在所述目标方法的全部代码中的第一起始位置和第一结束位置;根据所述全部代码、所述第一起始位置和所述第一结束位置,调用内容转图片工具,分别采用不同的渲染样式对所述第一起始位置和所述第一结束位置之间的所述光标选中代码和所述目标方法的全部代码中除所述光标选中代码之外的其他代码进行渲染,以生成截图图片,从而能够区分光标选中代码与光标未选中代码,用户可以基于截图图片迅速定位到有问题的代码行,并结合整个方法的代码来分析问题所在。
并且,由于是先获取目标方法的全部代码、光标选中代码在目标方法的全部代码中第一起始位置和所述第一结束位置等三个信息,再基于获取的三个信息调用内容转图片工具生成截图图片,从而本实施例的截图方法可以对于如图4中黑色矩形框区域所示的代码被遮挡的情形进行截图。
在一可选实施例中,在IntelliJ IDEA编码软件中安装了IntelliJ IDEA截图插件后,也可以截图插件的截图功能集成在鼠标右键菜单中,当开发人员选择有问题的代码行后,可以通过点击鼠标右键,调出鼠标右键菜单,在鼠标右键菜单中点击截图点击截图菜单,从而生成截图指令。
在另一可选实施例中,在IntelliJ IDEA编码软件中安装了IntelliJ IDEA截图插件后,也可以设置截图功能的快捷键。当开发人员选择有问题的代码行后,可以通过按下预设的快捷键来触发截图功能,从而生成截图指令。
由上可知,本实施例在进行截图时,用户只需要先选中有问题的代码行,然后通过点击截图图标、点击鼠标右键快捷菜单或按下快捷键的方式来触发截图指令,截图插件就可以根据截图指令来完成截图操作,从而减少截图操作,只需两步就能够方便快捷完成对方法代码的截图和对方法代码中有问题代码行的标记。
在一示例性实施例中,所述获取与所述方法名称相对应的所述目标方法的全部代码的过程,具体包括:
通过所述方法名称找到所述目标方法的闭包起始位置和闭包结束位置;
通过所述目标方法的闭包起始位置和闭包结束位置找到闭包中的所有内容,以获取所述目标方法的全部代码。
作为示例,如图3所示,可通过方法名称public static void main可以先找到对应方法闭包的起始位置(图3中2行最右边的{符号),然后找到闭包的结束位置(图3中倒数第2行最右边的}符号),通过闭包{}找到了闭包中的所有内容,这样就找到了需要截取的目标方法的全部代码的内容。当然也可以通过现有技术中的其他公知方式来获取目标方法的全部代码。
在一示例性实施例中,所述获取光标选中代码在所述目标方法的全部代码中的第一起始位置和第一结束位置的过程,具体包括:
调用页面输入框控件的光标位置获取函数来获取光标选中的第二起始位置和第二结束位置;
根据所述光标选中的第二起始位置和第二结束位置及所述目标方法所在的整个文件的内容,从而获取所述光标选中的第二起始位置和第二结束位置之间的代码,作为所述光标选中代码;
根据光标选中代码及所述目标代码的全部代码,计算获取所述光标选中代码在所述目标方法的全部代码中的第一起始位置和第一结束位置。
作为示例,在IntelliJ IDEA编码软件中,可通过展示页面内容的页面EditText控件,调用EditText的getSelectionStart函数、getSelectionEnd函数获取光标选中的开始结束位置,然后再获取当前整个Java文件的内容,这样就可以计算得出光标选中的代码内容(记为光标选中代码),既然知道了光标选中的代码内容,就可以基于目标方法的全部代码来确定出,光标选中的代码在目标方法的全部代码中的起始和结束位置。
在一示例性实施例中,所述内容转图片工具也可以选用PIL绘图库,所述根据所述全部代码、所述第一起始位置和所述第一结束位置,调用内容转图片工具,对所述第一起始位置和所述第一结束位置之间的所述光标选中代码和所述目标方法的全部代码中除所述光标选中代码之外的其他代码(光标未选中代码)采用不同的渲染样式进行渲染,以生成截图图片的过程具体包括:
根据所述第一起始位置和所述第一结束位置将所述全部代码分割成独立的光标选中代码、光标未选中代码,然后调用PIL绘图库,利用ImageFont.truetype函数,采用不同的渲染样式分别对光标选中代码、光标未选中代码进行渲染润色,从而能够在生成的图片中区分光标选中代码与光标未选中代码,并利用pygame.image.save保存图片。
在另一示例性实施例中,所述内容转图片工具也可以是PIL绘图库与pyGame工具组合,所述根据所述全部代码、所述第一起始位置和所述第一结束位置,调用内容转图片工具,对所述第一起始位置和所述第一结束位置之间的所述光标选中代码和所述目标方法的全部代码中除所述光标选中代码之外的其他代码(光标未选中代码)采用不同的渲染样式进行渲染,以生成截图图片的过程具体包括:
根据所述第一起始位置和所述第一结束位置将所述全部代码分割成独立的光标选中代码、光标未选中代码,然后调用pyGame工具,采用不同的渲染样式分别光标选中代码、光标未选中代码渲染成图片,从而能够在生成的图片中区分光标选中代码与光标未选中代码,将渲染结果保存在一个StringIO对象中,然后再用PIL绘图库加载,以生成截图图片。使用StringIO的好处是,一切操作都是在内存中进行的,不需要先将它保存到硬盘再用PIL读取,因为硬盘IO的效率相对来说是比较低的。
当然,所述内容转图片工具也可以是Pycairo工具、matplotlib工具等。
在一示例性实施例中,在生成截图图片后,所述方法还包括:将生成的所述截图图片缓存到鼠标的粘贴板内,或将生成的所述截图图片保存到用户指定的存储位置。将生成的所述截图图片缓存到鼠标的粘贴板内,当下一次粘贴动作发生时,自动粘贴截图,被保存的图像可以通过现有技术中任一种图像保存的图像格式保存。
综上所述,本申请提供一种代码截图方法,应用于编码软件,所述编码软件中安装有截图插件,首先接收用户发出的截图指令,所述截图指令中包括目标方法的方法名称;然后获取与所述方法名称相对应的所述目标方法的全部代码;再获取光标选中代码在所述目标方法的全部代码中的第一起始位置和第一结束位置;最后根据所述全部代码、所述第一起始位置和所述第一结束位置,调用内容转图片工具,分别采用不同的渲染样式对所述第一起始位置和所述第一结束位置之间的所述光标选中代码和所述目标方法的全部代码中除所述光标选中代码之外的其他代码进行渲染,以生成截图图片。在执行截图时,用户只需要先选中有问题的代码行,然后通过点击截图图标或按下快捷键的方式来触发截图指令,截图插件就可以根据截图指令来完成截图操作,从而减少截图操作,只需两步就能够方便快捷完成对方法代码的截图和对方法代码中有问题代码行的标记。并且,由于是先获取目标方法的全部代码、光标选中代码在目标方法的全部代码中第一起始位置和所述第一结束位置等三个信息,再基于获取的三个信息调用内容转图片工具生成截图图片,从而本实施例的截图方法可以对于代码被遮挡的情形进行截图。
图5为本申请实施例提供的代码截图装置的一个功能模块图。请参阅图5所示,所述代码截图装置500,包括触发指令接收模块510、全部代码获取模块520、截图图片生成模块530及截图图片生成模块540。
其中,触发指令接收模块510,用于接收用户发出的截图指令,所述截图指令中包括目标方法的方法名称;
全部代码获取模块520,用于获取与所述方法名称相对应的所述目标方法的全部代码;
光标位置获取模块530,用于获取光标选中代码在所述目标方法的全部代码中的第一起始位置和第一结束位置;
截图图片生成模块540,用于根据所述全部代码、所述第一起始位置和所述第一结束位置,调用内容转图片工具,分别采用不同的渲染样式对所述第一起始位置和所述第一结束位置之间的所述光标选中代码和所述目标方法的全部代码中除所述光标选中代码之外的其他代码进行渲染,以生成截图图片。
在本实施例中,编程软件可以是IntelliJ IDEA软件,在IntelliJ IDEA软件上进行代码截图时,需要预先开发IntelliJ IDEA截图插件,并将截图插件安装到IntelliJIDEA软件里面。当然,编程软件也可以是Eclipse软件、VSCode软件等,只需要对应Eclipse软件、VSCode软件版本的截图插件,并安装既可实现代码截图。
在IntelliJ IDEA编码软件中安装了IntelliJ IDEA截图插件后,IntelliJ IDEA编码软件提供一种让插件绘制图形的能力,因此,截图插件也自然用来绘制截图图标的能力,从而可以在相应的方法上生成截图图标,并将所述截图图标与对应的所述目标方法进行关联。该截图图标可以生成在方法的起始位置或结束位置,或者方法的起始位置与结束位置之间的任一位置,譬如方法的起始位置。该截图图标的图标样式可以根据实际需要进行选择,例如可以是图3所示的照相机小图标。
可以理解的是,该截图图标也可以放在其他想要放置的位置,也可以多放置几个图标,譬如在方法上放置截图图标后,还可以在屏幕的右下角放置一个截图图标来辅助截图整个屏幕。
当用户选择有问题的代码行(例如图3中黑色矩形框中圈出的被选中的两行代码)后,可以通过鼠标(实体鼠标或触控鼠标)点击截图图标(图3中的照相机小图标),截图图标感应到鼠标点击事件后,就说明用户触发了截图功能,从而生成截图指令,该截图指令中选中代码所在目标方法的方法名称(public static void main);接收到该截图指令后,就可以调用截图插件,根据该方法名称就可以获得该目标方法的全部代码;并且还可以获取光标选中代码在所述目标方法的全部代码中的第一起始位置和第一结束位置,将可以获取与所述方法名称相对应的所述目标方法的全部代码,以及光标选中代码在所述目标方法的全部代码中的第一起始位置和第一结束位置;根据所述全部代码、所述第一起始位置和所述第一结束位置,调用内容转图片工具,分别采用不同的渲染样式对所述第一起始位置和所述第一结束位置之间的所述光标选中代码和所述目标方法的全部代码中除所述光标选中代码之外的其他代码进行渲染,以生成截图图片,从而能够区分光标选中代码与光标未选中代码,用户可以基于截图图片迅速定位到有问题的代码行,并结合整个方法的代码来分析问题所在。
并且,由于是先获取目标方法的全部代码、光标选中代码在目标方法的全部代码中第一起始位置和所述第一结束位置等三个信息,再基于获取的三个信息调用内容转图片工具生成截图图片,从而本实施例的截图装置可以对于如图4中黑色矩形框区域所示的代码被遮挡的情形进行截图。
在一可选实施例中,在IntelliJ IDEA编码软件中安装了IntelliJ IDEA截图插件后,也可以截图插件的截图功能集成在鼠标右键菜单中,当开发人员选择有问题的代码行后,可以通过点击鼠标右键,调出鼠标右键菜单,在鼠标右键菜单中点击截图点击截图菜单,从而生成截图指令。
在另一可选实施例中,在IntelliJ IDEA编码软件中安装了IntelliJ IDEA截图插件后,也可以设置截图功能的快捷键。当开发人员选择有问题的代码行后,可以通过按下预设的快捷键来触发截图功能,从而生成截图指令。
由上可知,本实施例在进行截图时,用户只需要先选中有问题的代码行,然后通过点击截图图标、点击鼠标右键快捷菜单或按下快捷键的方式来触发截图指令,截图插件就可以根据截图指令来完成截图操作,从而减少截图操作,只需两步就能够方便快捷完成对方法代码的截图和对方法代码中有问题代码行的标记。
在一示例性实施例中,所述获取与所述方法名称相对应的所述目标方法的全部代码的过程,具体包括:
通过所述方法名称找到所述目标方法的闭包起始位置和闭包结束位置;
通过所述目标方法的闭包起始位置和闭包结束位置找到闭包中的所有内容,以获取所述目标方法的全部代码。
作为示例,如图3所示,可通过方法名称public static void main可以先找到对应方法闭包的起始位置(图3中第2行最右边的{符号),然后找到闭包的结束位置(图3中倒数第2行最右边的}符号),通过闭包{}找到了闭包中的所有内容,这样就找到了需要截取的目标方法的全部代码的内容。当然也可以通过现有技术中的其他公知方式来获取目标方法的全部代码。
在一示例性实施例中,所述获取光标选中代码在所述目标方法的全部代码中的第一起始位置和第一结束位置的过程,具体包括:
调用页面输入框控件的光标位置获取函数来获取光标选中的第二起始位置和第二结束位置;
根据所述光标选中的第二起始位置和第二结束位置及所述目标方法所在的整个文件的内容,从而获取所述光标选中的第二起始位置和第二结束位置之间的代码,作为所述光标选中代码;
根据光标选中代码及所述目标代码的全部代码,计算获取所述光标选中代码在所述目标方法的全部代码中的第一起始位置和第一结束位置。
作为示例,在IntelliJ IDEA编码软件中,可通过展示页面内容的页面EditText控件,调用EditText的getSelectionStart函数、getSelectionEnd函数获取光标选中的开始结束位置,然后再获取当前整个Java文件的内容,这样就可以计算得出光标选中的代码内容(记为光标选中代码),既然知道了光标选中的代码内容,就可以基于目标方法的全部代码来确定出,光标选中的代码在目标方法的全部代码中的起始和结束位置。
在一示例性实施例中,所述内容转图片工具可以选用PIL绘图库,所述根据所述全部代码、所述第一起始位置和所述第一结束位置,调用内容转图片工具,对所述第一起始位置和所述第一结束位置之间的所述光标选中代码和所述目标方法的全部代码中除所述光标选中代码之外的其他代码(光标未选中代码)采用不同的渲染样式进行渲染,以生成截图图片的过程具体包括:
根据所述第一起始位置和所述第一结束位置将所述全部代码分割成独立的光标选中代码、光标未选中代码,然后调用PIL绘图库,利用ImageFont.truetype函数,采用不同的渲染样式分别对光标选中代码、光标未选中代码进行渲染润色,从而能够在生成的图片中区分光标选中代码与光标未选中代码,并利用pygame.image.save保存图片。
在另一示例性实施例中,所述内容转图片工具也可以是PIL绘图库与pyGame工具组合,所述根据所述全部代码、所述第一起始位置和所述第一结束位置,调用内容转图片工具,对所述第一起始位置和所述第一结束位置之间的所述光标选中代码和所述目标方法的全部代码中除所述光标选中代码之外的其他代码(光标未选中代码)采用不同的渲染样式进行渲染,以生成截图图片的过程具体包括:
根据所述第一起始位置和所述第一结束位置将所述全部代码分割成独立的光标选中代码、光标未选中代码,然后调用pyGame工具,采用不同的渲染样式分别将光标选中代码、光标未选中代码渲染成图片,从而能够在生成的图片中区分光标选中代码与光标未选中代码,将渲染结果保存在一个StringIO对象中,然后再用PIL绘图库加载,以生成截图图片。使用StringIO的好处是,一切操作都是在内存中进行的,不需要先将它保存到硬盘再用PIL读取,因为硬盘IO的效率相对来说是比较低的。
当然,所述内容转图片工具也可以是Pycairo工具、matplotlib工具等。
在一示例性实施例中,在生成截图图片后,所述装置还包括:将生成的所述截图图片缓存到鼠标的粘贴板内,或将生成的所述截图图片保存到用户指定的存储位置。将生成的所述截图图片缓存到鼠标的粘贴板内,当下一次粘贴动作发生时,自动粘贴截图,被保存的图像可以通过现有技术中任一种图像保存的图像格式保存。
综上所述,本申请提供一种代码截图装置,应用于编码软件,所述编码软件中安装有截图插件,首先接收用户发出的截图指令,所述截图指令中包括目标方法的方法名称;然后获取与所述方法名称相对应的所述目标方法的全部代码;再获取光标选中代码在所述目标方法的全部代码中的第一起始位置和第一结束位置;最后根据所述全部代码、所述第一起始位置和所述第一结束位置,调用内容转图片工具,分别采用不同的渲染样式对所述第一起始位置和所述第一结束位置之间的所述光标选中代码和所述目标方法的全部代码中除所述光标选中代码之外的其他代码进行渲染,以生成截图图片。在执行截图时,用户只需要先选中有问题的代码行,然后通过点击截图图标或按下快捷键的方式来触发截图指令,截图插件就可以根据截图指令来完成截图操作,从而减少截图操作,只需两步就能够方便快捷完成对方法代码的截图和对方法代码中有问题代码行的标记。并且,由于是先获取目标方法的全部代码、光标选中代码在目标方法的全部代码中第一起始位置和所述第一结束位置等三个信息,再基于获取的三个信息调用内容转图片工具生成截图图片,从而本实施例的截图装置可以对于代码被遮挡的情形进行截图。
需要说明的是,本实施例的代码截图装置500是与上述代码截图方法相对应的装置,代码截图装置500中的功能模块或者分别对应代码截图方法中的相应步骤。本实施例的代码截图装置可与代码截图方法相互相配合实施。相应地,本实施例的代码截图装置中提到的相关技术细节也可应用在上述代码截图方法中。
需要说明的是,上述的各功能模块实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的部分或全部步骤,或以上的各功能模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
本申请实施例还提供了一种电子设备,该设备可以包括:一个或多个处理器;和其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述设备执行图2所述的方法。图6示出了一种电子设备500的结构示意图。参阅图6所示,电子设备600包括:处理器610、存储器620、电源630、显示单元640、输入单元660。
处理器610是电子设备600的控制中心,利用各种接口和线路连接各个部件,通过运行或执行存储在存储器620内的软件程序和/或数据,执行电子设备600的各种功能,从而对电子设备600进行整体监控。本申请实施例中,处理器610调用存储器620中存储的计算机程序时执行如图2所述的方法。可选的,处理器610可包括一个或多个处理单元;优选的,处理器610可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用等,调制解调处理器主要处理无线通信。在一些实施例中,处理器、存储器、可以在单一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
存储器620可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、各种应用等;存储数据区可存储根据电子设备600的使用所创建的数据等。此外,存储器620可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件等。
电子设备600还包括给各个部件供电的电源630(比如电池),电源可以通过电源管理系统与处理器610逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗等功能。
显示单元640可用于显示由用户输入的信息或提供给用户的信息以及电子设备600的各种菜单等,本申请实施例中主要用于显示电子设备600中各应用的显示界面以及显示界面中显示的文本、图片等对象。显示单元640可以包括显示面板650。显示面板650可以采用液晶显示屏(Liquid Crystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置。
输入单元660可用于接收用户输入的数字或字符等信息。输入单元660可包括触控面板670以及其他输入设备680。其中,触控面板670,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触摸笔等任何适合的物体或附件在触控面板670上或在触控面板670附近的操作)。
具体的,触控面板670可以检测用户的触摸操作,并检测触摸操作带来的信号,将这些信号转换成触点坐标,发送给处理器610,并接收处理器610发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板670。其他输入设备680可以包括但不限于物理键盘、功能键(比如音量控制按键、开关机按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
当然,触控面板670可覆盖显示面板650,当触控面板670检测到在其上或附近的触摸操作后,传送给处理器610以确定触摸事件的类型,随后处理器610根据触摸事件的类型在显示面板650上提供相应的视觉输出。虽然在图6中,触控面板670与显示面板650是作为两个独立的部件来实现电子设备600的输入和输出功能,但是在某些实施例中,可以将触控面板670与显示面板650集成而实现电子设备600的输入和输出功能。
电子设备600还可包括一个或多个传感器,例如压力传感器、重力加速度传感器、接近光传感器等。当然,根据具体应用中的需要,上述电子设备600还可以包括摄像头等其它部件。
本申请实施例还提供了一种计算机可读存储介质,该存储介质中存储有指令,当一个或多个处理器执行所述指令时,使得上述设备能够执行本申请中如图2所述的方法。
本领域技术人员可以理解的是,图6仅仅是电子设备的举例,并不构成对该设备的限定,该设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件。为了描述的方便,以上各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本申请时,可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。
本领域内的技术人员应明白,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的,应理解为可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可应用至通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器中以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
上述实施例仅例示性说明本申请的原理及其功效,而非用于限制本申请。任何熟悉此技术的人士皆可在不违背本申请的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本申请所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本申请的权利要求所涵盖。
Claims (10)
1.一种代码截图方法,其特征在于,应用于编码软件,所述方法包括:
接收用户发出的截图指令,所述截图指令中包括目标方法的方法名称;
获取与所述方法名称相对应的所述目标方法的全部代码;
获取光标选中代码在所述目标方法的全部代码中的第一起始位置和第一结束位置;
根据所述全部代码、所述第一起始位置和所述第一结束位置,调用内容转图片工具,分别采用不同的渲染样式对所述第一起始位置和所述第一结束位置之间的所述光标选中代码和所述目标方法的全部代码中除所述光标选中代码之外的其他代码进行渲染,以生成截图图片。
2.根据权利要求1所述的代码截图方法,其特征在于,在生成截图图片后,所述方法还包括:
将生成的所述截图图片缓存到鼠标的粘贴板内,或将生成的所述截图图片保存到用户指定的存储位置。
3.根据权利要求1所述的代码截图方法,其特征在于,所述根据所述全部代码、所述第一起始位置和所述第一结束位置,调用内容转图片工具,分别采用不同的渲染样式对所述第一起始位置和所述第一结束位置之间的所述光标选中代码和所述目标方法的全部代码中除所述光标选中代码之外的其他代码进行渲染,以生成截图图片,具体包括:
根据所述第一起始位置和所述第一结束位置将所述全部代码分割成独立的光标选中代码、光标未选中代码;
调用PIL绘图库,利用ImageFont.truetype函数,采用不同的渲染样式分别对光标选中代码、光标未选中代码进行渲染润色,以生成所述截图图片。
4.根据权利要求1所述的代码截图方法,其特征在于,生成所述截图图片后,还包括:将生成的所述截图图片缓存到鼠标的粘贴板内。
5.根据权利要求1所述的代码截图方法,其特征在于,所述目标方法上生成有与自身关联的截图图标,所述方法还包括:
通过所述截图图标感应用户的鼠标点击事件,以生成所述截图指令。
6.根据权利要求1所述的代码截图方法,其特征在于,所述获取与所述方法名称相对应的所述目标方法的全部代码,具体包括:
通过所述方法名称找到所述目标方法的闭包起始位置和闭包结束位置;
通过所述目标方法的闭包起始位置和闭包结束位置找到闭包中的所有代码内容,以获取所述目标方法的全部代码。
7.根据权利要求1所述的代码截图方法,其特征在于,所述获取光标选中代码在所述目标方法的全部代码中的第一起始位置和第一结束位置,具体包括:
调用页面输入框控件的光标位置获取函数来获取光标选中的第二起始位置和第二结束位置;
根据所述光标选中的第二起始位置和第二结束位置及所述目标方法所在的整个文件的内容,从而获取所述光标选中的所述第二起始位置和所述第二结束位置之间的代码内容,作为所述光标选中代码;
根据光标选中代码及所述目标代码的全部代码,计算获取所述光标选中代码在所述目标方法的全部代码中的所述第一起始位置和所述第一结束位置。
8.一种代码截图装置,其特征在于,包括:
触发指令接收模块,用于接收用户发出的截图指令,所述截图指令中包括目标方法的方法名称;
全部代码获取模块,用于获取与所述方法名称相对应的所述目标方法的全部代码;
光标位置获取模块,用于获取光标选中代码在所述目标方法的全部代码中的第一起始位置和第一结束位置;
截图图片生成模块,用于根据所述全部代码、所述第一起始位置和所述第一结束位置,调用内容转图片工具,分别采用不同的渲染样式对所述第一起始位置和所述第一结束位置之间的所述光标选中代码和所述目标方法的全部代码中除所述光标选中代码之外的其他代码进行渲染,以生成截图图片。
9.一种电子设备,其特征在于,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储于计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211131429.5A CN115373568A (zh) | 2022-09-15 | 2022-09-15 | 一种代码截图方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211131429.5A CN115373568A (zh) | 2022-09-15 | 2022-09-15 | 一种代码截图方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115373568A true CN115373568A (zh) | 2022-11-22 |
Family
ID=84071284
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211131429.5A Pending CN115373568A (zh) | 2022-09-15 | 2022-09-15 | 一种代码截图方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115373568A (zh) |
-
2022
- 2022-09-15 CN CN202211131429.5A patent/CN115373568A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10592211B2 (en) | Generation of application behaviors | |
RU2501068C2 (ru) | Интерпретация неоднозначных вводов на сенсорном экране | |
US9041653B2 (en) | Electronic device, controlling method thereof and computer program product | |
US20110197165A1 (en) | Methods and apparatus for organizing a collection of widgets on a mobile device display | |
US20130263029A1 (en) | Instantiable Gesture Objects | |
US11755293B2 (en) | Code execution and data processing pipeline | |
CN104850296B (zh) | 显示页面内容的方法及装置 | |
US20150212586A1 (en) | Chinese character entry via a pinyin input method | |
US20150134492A1 (en) | Coordinated image manipulation | |
CN105283828A (zh) | 边框边缘处的触摸检测 | |
EP3757739A1 (en) | Method for display when exiting an application, and terminal | |
CN112099684A (zh) | 一种搜索展示方法、装置及电子设备 | |
CN112579187A (zh) | 一种应用程序冷启动的优化方法及装置 | |
CN108845924B (zh) | 控制响应区域显示控制方法、电子装置及存储介质 | |
CN113672290B (zh) | 一种文件打开方法及设备 | |
CN113282546B (zh) | 文件处理方法及装置 | |
CN114443164A (zh) | 一种任务处理方法、装置、电子设备及存储介质 | |
CN111766987B (zh) | 应用程序管理方法、装置及电子设备 | |
US8719704B2 (en) | Seamless integration of additional functionality into enterprise software without customization or apparent alteration of same | |
CN110879701A (zh) | 工作流可视化配置方法、服务器、系统及介质 | |
CN115373568A (zh) | 一种代码截图方法、装置、设备及介质 | |
CN113626032B (zh) | 列表页的配置方法、装置及存储介质 | |
US20180210717A1 (en) | Time Integrated Development and Modification System | |
CN109952557A (zh) | 分层内容选择 | |
CN115390720A (zh) | 包括自动文档滚动的机器人过程自动化(rpa) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |