V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
jdhao
V2EX  ›  问与答

有没有工具可以直接通过 url,预览图像

  •  
  •   jdhao · 2021-02-03 15:08:34 +08:00 · 1666 次点击
    这是一个创建于 1182 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,有没有什么工具,可以直接粘贴图像的 url,直接显示图片,这样不用再手动粘贴到浏览器(效率太低了)。

    第 1 条附言  ·  2021-02-03 16:57:52 +08:00

    根据 v 友提示,写了一个简单的。

    import io
    
    import requests
    
    from PIL import Image
    import tkinter as tk
    
    
    def getClipboardText():
        root = tk.Tk()
        # keep the window from showing
        root.withdraw()
    
        return root.clipboard_get()
    
    
    def main():
        t = getClipboardText()
        t = t.strip()   # get the clipboard text
    
        if 'http' not in t:
            raise ValueError("Not a valid url.")
    
        session = requests.Session()
    
        r = session.get(t, timeout=5)
        im_bytes = r.content
    
        f = io.BytesIO(im_bytes)
        img = Image.open(f)
        img.show()
    
    
    if __name__ == "__main__":
        main()
    
    18 条回复    2021-02-03 17:29:38 +08:00
    lwh0328
        1
    lwh0328  
       2021-02-03 15:21:49 +08:00
    最简单的可能是拿 qt 自己写一个?
    jiezhi
        2
    jiezhi  
       2021-02-03 15:22:32 +08:00
    paste
    jdhao
        3
    jdhao  
    OP
       2021-02-03 15:22:32 +08:00 via Android
    @lwh0328 😂 就想问一下有没有现成的工具,自己写一下时间成本高。
    jdhao
        4
    jdhao  
    OP
       2021-02-03 15:23:08 +08:00 via Android
    @jiezhi 这是啥工具,有链接吗
    ctro15547
        5
    ctro15547  
       2021-02-03 15:24:29 +08:00
    python 用 requests + PIL 自己写一个唄 几行代码搞定
    jdhao
        7
    jdhao  
    OP
       2021-02-03 15:29:04 +08:00
    @jiezhi 啊,我用的是 windows.
    jdhao
        8
    jdhao  
    OP
       2021-02-03 15:29:30 +08:00
    @ctro15547 这是个办法,我试一下!
    xiri
        9
    xiri  
       2021-02-03 16:03:53 +08:00
    打开浏览器->粘贴 url->显示图片

    打开特定工具->粘贴 url->显示图片
    有什么区别吗?
    jdhao
        10
    jdhao  
    OP
       2021-02-03 16:07:04 +08:00
    有啊,打开浏览器标签栏粘贴,比较麻烦,另外有的图片是那种,一加载就下载的,还需要下载完再打开,整个链条就更长了,极大降低了效率。
    jdhao
        11
    jdhao  
    OP
       2021-02-03 16:07:27 +08:00
    @xiri 有区别。
    maocat
        12
    maocat  
       2021-02-03 16:24:17 +08:00
    @ctro15547 好的马上去用 go 写一个
    sadfQED2
        13
    sadfQED2  
       2021-02-03 16:49:22 +08:00   ❤️ 1
    @ctro15547 #5 写完了

    ```

    import pyperclip
    import time
    import requests
    from PIL import Image



    class Listen():

    def isImgUrl(self, txt):
    # 判断是否是 url
    txt = str.strip(txt)
    return txt[0:4] == 'http'

    def downloadImg(self, url):
    # 下载图片
    res = requests.get(url)
    with open("tmp.png", "wb") as code:
    code.write(res.content)

    def clipboard_get(self):
    """获取剪贴板数据"""
    data = pyperclip.paste()
    return data

    def show_img(self):
    # img = mpimg.imread('tmp.png')
    # plt.imshow(img) # 显示图片
    # plt.axis('off') # 不显示坐标轴
    # plt.show()
    im = Image.open('tmp.png')
    im.show()


    def main(self):
    last_txt = ""
    while True:
    # txt 存放当前剪切板文本
    txt = self.clipboard_get()
    if last_txt != txt:
    last_txt = txt
    if self.isImgUrl(txt):
    self.downloadImg(txt)
    self.show_img()
    time.sleep(0.5)


    if __name__ == '__main__':
    Listen().main()


    ```
    sadfQED2
        14
    sadfQED2  
       2021-02-03 16:53:03 +08:00
    kingiis
        15
    kingiis  
       2021-02-03 17:06:12 +08:00
    迅雷不行吗?
    jdhao
        16
    jdhao  
    OP
       2021-02-03 17:20:56 +08:00
    @kingiis 效率低。
    kaiki
        17
    kaiki  
       2021-02-03 17:26:40 +08:00
    我都是用正则生成个 html 然后打开看图片的
    把每个链接替换成<img src="\1">保存 html 就行
    keepeye
        18
    keepeye  
       2021-02-03 17:29:38 +08:00
    还是浏览器方便,反正浏览器从早开到晚的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5221 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 09:02 · PVG 17:02 · LAX 02:02 · JFK 05:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.