精华内容
下载资源
问答
  • 2020-12-10 12:44:20

    批量截图任务

    作为一个软件工程师,不只是做好自己的本职工作(iOS),而是需要解决项目中的技术问题。这次就是解决自动截图的问题

    早期公司的数据工程师利用 phantomjs 来截图,后期不断发现截图效率低,加之开发者团队不再维护,因此决定将截图这部分跟你剥离开来,以后方便开发维护。我就承担了这个工作

    puppeteer

    Puppeteer is a Node library which provides a high-level API to control Chrome or Chromium over the DevTools Protocol. Puppeteer runs headless by default, but can be configured to run full (non-headless) Chrome or Chromium.

    安装问题

    一开始按照往常的套路(npm install --save puppeteer) 好几次都卡住了,后期查找资料发现切换到国内的镜像就可以顺利下载

    PUPPETEER_DOWNLOAD_HOST=https://storage.googleapis.com.cnpmjs.org npm i --save puppeteer

    To use Puppeteer in your project, run:

    PUPPETEER_DOWNLOAD_HOST=https://storage.googleapis.com.cnpmjs.org npm i --save puppeteer

    Install some basic packages

    npm install

    Usage

    const puppeteer = require('puppeteer'),

    fs = require('fs'),

    path = require('path'),

    request = require('request')

    function mkdirsSync(dirname) {

    if (fs.existsSync(dirname)) {

    return true

    } else {

    if (mkdirsSync(path.dirname(dirname))) {

    fs.mkdirSync(dirname)

    return true

    }

    }

    }

    var snapShotFolerPath = path.join(__dirname, '../snspshot/')

    mkdirsSync(snapShotFolerPath)

    function snapShot (taskInfo) {

    return new Promise(function (resolve, reject) {

    (async function(){

    // 启动Chromium

    const browser = await puppeteer.launch({ignoreHTTPSErrors: true, headless:true, args: ['--no-sandbox']})

    // 打开新页面

    const page = await browser.newPage()

    // 设置页面分辨率

    await page.setViewport({width: 1920, height: 1080})

    // 访问

    await page.goto(taskInfo.websiteUrl, {waitUntil: 'domcontentloaded'}).catch(err => console.log(err))

    await page.waitFor(1000)

    try {

    // 截图

    await page.screenshot({path: snapShotFolerPath + taskInfo.imageName, fullPage:true}).catch(err => {

    console.log('截图失败: ' + err)

    });

    await page.waitFor(6000)

    } catch (e) {

    console.log('failed ' + e)

    } finally {

    await browser.close()

    fs.stat(snapShotFolerPath + taskInfo.imageName, function(err,stats){

    if (err) {

    reject('fail')

    } else {

    if (stats.isFile()) {

    resolve('success')

    }

    }

    })

    }

    })()

    })

    }

    module.exports = snapShot

    如何安装 (Linux 、Unix 操作系统)

    如果你有翻墙环境

    执行 npm install

    执行 npm start

    如果你没有翻墙环境

    打开 package.json 文件,检查 dependencies 项目,如果 key 为 puppeteer 的条目,先删除该条目。

    进入工程命令行,输入 PUPPETEER_DOWNLOAD_HOST=https://storage.googleapis.co... npm i --save puppeteer

    执行 npm install 命令

    执行 npm start

    流程说明

    while 循环去调用接口去获取当前的截图任务

    在有截图任务情况下继续截图

    没有截任务的情况下,为了避免浪费资源,程序休眠10分钟后继续下一次的获取截图任务

    如果遇到调用截图任务接口500错误,则强制停止截图任务,相应的服务端工程师去查询失败原因

    如果有截图任务那么就去截图

    截图后将截图图片保存到文件夹,命令为当前日期 yyyy-MM-dd-hh-mm-ss-S 格式。然后将结果上传到服务端

    截图失败将当前任务结果保存到本地 failedTasks.json 文件夹一份,然后上传到服务端

    截图成功不管失败还是成功都去通知服务端。如果失败将当前任务告诉服务端,如果成功将当前任务信息和截图成功的绝对路径告诉服务端

    一些说明

    Demo 中执行 npm start 真正执行的是 quickStart.js 中的代码。完整的“获取截图任务、截图、截图上传到OSS、失败则将失败任务上传到服务”逻辑在 index.js 文件中

    工程是在没有提供真正的接口获取任务,而是采用随机数获取截图任务

    截图成功后将结果上传到OSS这一个步骤是没有的,采用 log 出来

    失败的上传也是不存在的,log 打印而已

    todoList

    多线程高效率的去截图

    一些写法暂时比较粗糙,不优雅,待改进

    puppeteer 很强大,大家可以去研究下

    更多相关内容
  • Arcgis批量截图代码.zip

    2020-08-18 15:30:29
    保存好工程文件,不能有汉字,打开arcgis的驱动页面,启动驱动液面设置好要截图图层,命名字段,截图的范围,打开arcgis的PYTHON运行页面,复制下面的代码进去,替换掉红色部分,第一个是你保存的mxd工程文件的位置...
  • python原创制作,运行后将获取以下文件: 1.物流地图截图 2.物流节点截图 3.运单详情截图 4.电子存根截图 5.寄件收件地址表格
  • 视频批量截图

    2018-04-16 11:50:31
    视频批量截图视频批量截图视频批量截图视频批量截图视频批量截图
  • 这两个工具组合,可以通过自动化手段,使加密电子书批量逐页自动截图下来,然后再把图片转换成PDF文件 实现多平台使用。详见本人博客:https://blog.csdn.net/jaysur/article/details/106993174
  • 视频批量截图软件

    2018-04-17 17:01:19
    支持对多个视频文件进行批量截图,同时支持自定义每个视频生成多少张截图,文件截取多个支持从文件夹以及列表文件内读取,
  • 批量视频截图程序,可以自动识别文件夹以及子文件夹下所有的视频文件,并进行截图保存。可以自行设定视频格式以及截图的保存方式:合并后保存还是分立文件保存。
  • 基于C#进行的CATIA二次开发,可用于CATIA批量截图。适用于学习基于Automation进行CATIA二次开发的朋友
  • 本人介于做python潮水识别期间(已完成潮水...上述第两张图由test开始,到tt=tt+1为实现截图的代码,代码复制如下: test=thickness box=(left+test,top+test,right-test,bottom-test) region=image.crop(box) r
  • 主要给大家介绍了关于命令行批量截图Node脚本的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
  • 批量截图工具

    2022-01-25 21:33:50
    opencv+python 批量截图工具

    截图工具作用

    依次显示一个文件夹中所有的jpg和png文件,通过鼠标选择位置,从每张图中截图得到固定宽度和固定高度的小图,并将小图重命名保存在原图的相同目录。每张大图可以截取多次,可以撤销之前的选择框,使用方法如下:

    使用步骤

    1. 修改CutTool.py (后文)中第六行path变量,修改为包含所有未切分的原图的文件夹
    2. 修改第八行和第九行的width和height为切出来的相片的长和宽
    3. 运行CutTool.py
    4. 程序展示图片,使用鼠标在图片上左键单击选中Box的左上角
    5. 鼠标单击后按键盘i,显示Box
    6. 如果Box满意可以按回车键自动切分并保存Box内的内容到path文件中(文件名为原文件名+boxed),如果Box不满意可以按u删除本次选择操作
    7. 按空格键可以结束该图片,进入下一个图片的编辑

    总结

    空格-结束这张图进入下一张
    左键-确定一个截图的起点
    i-展示这张图最近确定的框选
    u-清除目前图的所有框选
    enter-确定这张图的最近一次框选,截图并保存

    【注:一张图可以截取不限数量的小图,截取之后的图片保存在和原图相同的路径并且在文件名结尾处加上了boxed标记和序号】

    源码

    # coding: utf-8
    import cv2
    import os
    import copy
    # The folder that contain all the pictures
    path = '你的文件地址'
    # box size
    width = 50
    height = 100
    #inner param
    global gx
    global gy
    gx = 0
    gy = 0
    
    def clickListner(event,x,y,flags,param):
        global gx
        global gy
        if event == 1:
            print('clicked',x,',',y)
            gx,gy = x,y
    
    #get all the files 
    allFiles = os.listdir(path)
    allValid = []
    for file in allFiles:
        if file[-4:]=='.jpg' or file[-4:]=='.png':
            allValid.append(file)
    # i:105 space:32 enter:13 u:117
    for file in allValid:
        file = os.path.join(path,file)
        img = cv2.imread(file,cv2.IMREAD_GRAYSCALE)
        imgcopy = copy.deepcopy(img)
        cnt = 0
        while(True):
            cv2.namedWindow('current')
            cv2.imshow('current',imgcopy)
            cv2.setMouseCallback("current",clickListner)
            
            key = cv2.waitKey(0)
            print(key)
            if(key==13): # enter
                outputimg = img[gy:gy+width,gx:gx+width]
                cv2.imwrite(file[:-4]+'_boxed'+str(cnt)+'.jpg',outputimg)
                cnt += 1
                outputimg = None
                gx,gy = 0,0
                imgcopy = copy.deepcopy(img)
            if(key == 105): # draw box
                cv2.rectangle(imgcopy,(gx,gy),(gx+width,gy+width),255,2)
            if(key == 32): # skip
                break
            if(key == 117): #undo
                gx,gy = 0,0
                imgcopy = copy.deepcopy(img)
        cv2.destroyAllWindows()
    
    展开全文
  • 智者视频批量自动截图软件一款批量自动对视频进行截图的软件,支持按照秒数和按照个数方式截图。 智者视频批量自动截图软件截图
  • 实现功能:将图层中的所有图斑批量截图并存储。 参数说明: DPI 出图分辨率,分辨率越高,图片越清晰,速度越慢 缩放倍数:截图后当前图斑的缩放大小。截图时,以当前图斑的Extent为基础,进行Expand扩展。截图...

    工具界面如下:

    实现功能:将图层中的所有图斑批量截图并存储。

    参数说明:

    DPI 出图分辨率,分辨率越高,图片越清晰,速度越慢

    缩放倍数:截图后当前图斑的缩放大小。截图时,以当前图斑的Extent为基础,进行Expand扩展。截图视图大小不合适,请调整该参数。

    当前工具出图时,设置为只显示当前图斑,其他图斑隐藏。

    该工具为测试版,具体功能待进一步优化

     

    下载请参考如下帖子

    https://blog.csdn.net/u012839776/article/details/105910588?spm=1001.2014.3001.5501

    展开全文
  • 跟精易助手相对 更齐全 智能 生成代码 POST 可直接复制源码JSON 强解 再次升级 可直接复制源码 图片合成+批量水印声音生成置入转换窗口信息 找句柄 可直接复制源码外部进程打补丁监视内存+文件文件版权三维窗口三维...
  • 自己收藏的!!!CAD图纸批量截图软件AcmeCADConverter2017v8.8.7正版安装包+注册码生成器(好用)
  • 网页批量截图工具

    2013-12-15 18:07:31
    支持网页批量截屏,只需将连接放置工具,就可实现批量截图功能
  • 在日常调查工作中,常常需要进行影像截图举证,若是图斑数量比较多,一个个截图将浪费大量的人力物力。利用Arcgis,可以针对小班矢量数据库,对每一个图斑进行自动截图,并按照自行编写的字段,对截图文件进行命名。...

        在绿化造林空间评估、国土三调调查、执法检查等日常调查工作中,常常需要进行影像截图举证,若是图斑数量比较多,一个个截图将浪费大量的人力物力。利用Arcgis,可以针对小班矢量数据库,对每一个图斑进行自动截图,并按照自行编写的字段,对截图文件进行命名。

    代码如下,相关咨询可联系Q: 107873130

    m={}                                               
    for nrow in range(1,sheet2.nrows):                 
        val2=sheet2.row_values(nrow)              
        key=val2[1]                                
        if m.has_key(key):                     
            m[key].append(list(val2))                  
        else:
            m[key]=[list(val2)]                  
            

    for key in m:
        for i in range(len(m[key])):
            for j in range(len(m[key][i])):
                if m[key][i][j]=="":
                    m[key][i][j]=" "
                elif m[key][i][j]==0:
                    m[key][i][j]=" "

    for nrow in range(1,sheet1.nrows):
        start=time.time()      
        print nrow                  
        val = sheet1.row_values(nrow) 
        d=dict(zip(head,val))       
        L=[]
        for l in range(len(val)):
            if val[l]!="":
                b="B"+str(l)
                locals()[b] = val[l]

    展开全文
  • 凌霄批量截图 破解版

    2013-03-05 14:23:52
    凌霄批量切割图片为将图片分割成任意多小片提供了一个完整的的解决方案。  1、任意指定要切割的行数及列数。  2、任意指定任意行的高度或列的宽度。  3、通过预览窗口实时看到分割效果  4、支持单张保存...
  • 本软件可以自动截图,如所有可预览的文库文件,打开软件,然后选择截图去,总页数,延时时间,,将鼠标放在下一页上,即可自动定时模拟人点击,并截图,最后合成PDF,实现文档下载。 电脑需安装labview驱动,或者...
  • arcgis批量出图工具.zip

    2021-11-23 11:23:53
    我们在使用Arcgis制图的过程中,经常会遇到需要大量出图的情况,如何将做好的图批量导出jpg是一件令人头疼的问题。 今天分享两个ArcGIS批量出图的工具箱,一个可以批量导出图层为jpg,一个可以批量导出mxd文件为jpg...
  • 1.右键菜单,添加批量复制,删除,清空功能 2.添加截图功能,一键上传至图床,方便快捷,混论坛必备 3.添加置顶 4.修复上传成功,链接不显示 5.修复一些已知问题 吐槽一下,大半年过去了,图床从免费使用,到...
  • 主要介绍了Windows平台PHP+IECapt实现网页批量截图并创建缩略图功能,结合实例形式分析了IECapt的下载、安装及截图、生成缩略图相关使用技巧,需要的朋友可以参考下
  • ARCGIS批量导出jpg.py

    2020-05-19 09:33:00
    使用IDEL运行,打开后讲文件路径替换掉,同时可以设置分辨率,适用于制作现状、规划、总规、影像等图件
  • 批量快速截图方法(snipaste)

    千次阅读 2020-12-28 21:00:15
    在写用户手册的时候,难免要用到软件页面截图,但是每次要选取后按截屏并保存,耗时耗力,摸索了以下的方法可以快速批量截取屏幕: 1、运行snipaste软件。 2、设置snipaste的属性。 3、按“F1”键。触发截屏功能 4、...
  • 事先把模型打包成ab包,然后加载包内的模型进行截图 using System.Collections; using System.Collections.Generic; using System.IO; using UnityEngine; public class jietu : MonoBehaviour { // Start is ...
  • Win系统下快速批量截图

    万次阅读 2018-06-15 10:55:46
    关于快速批量截图,其实有很多方法。这里我为大家介绍一个冷门但方便快捷的方法。不用下软件。windows操作系统下的psr.exe 软件。单击开始,用“搜索”搜索出“psr.exe”或windows键+r在“运行”中输入“psr.exe”。...
  • video.php,自动读取所设定文件夹下所有视频文件,并批量生成第一帧截图,并压缩图片等方法封装。在平常做视频处理业务过程中封装的一些好用的方法,文件中每个方法都有做说明,简单易懂,现在共享出来方便大家使用
  • 有很多淘宝或天猫、京东店铺爆款商品宝贝需要截图,那么多嫩不能批量截图?网红微信公众号文章、名人微博文章很好,如何保存成图片收藏下来或者自己加工成高流量文章?网页设计师看到很有设计...
  • 主要为大家详细介绍了python实现批量视频分帧、保存视频帧,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,316
精华内容 10,126
关键字:

怎样批量截图