Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
218 views
in Technique[技术] by (71.8m points)

javascript - chrome.tabs.captureVisibleTab doubles the image size

I have the following code in background.ts:

chrome.browserAction.onClicked.addListener(function () {
  let targetId: number | undefined | null = null
  chrome.tabs.captureVisibleTab(function (imageUrl) {
    chrome.tabs.onUpdated.addListener(function listener(tabId, changedProps) {
      if (tabId !== targetId || changedProps.status != 'complete') return

      chrome.tabs.onUpdated.removeListener(listener)

      chrome.runtime.sendMessage(imageUrl)
    })
  })

  chrome.tabs.create({ url: 'popup.html' }, function (tab) {
    targetId = tab.id
  })
})

And I listen to the message like:

import * as React from 'react'
import { observer } from 'mobx-react'
import useImage from 'use-image'

export const SiteImage = observer(() => {
    const [imageUrl, setImageUrl] = React.useState('')
    const [img] = useImage(imageUrl)
    
    React.useEffect(() => {
        chrome.runtime.onMessage.addListener((url) => {
            setImageUrl(url)
            const newImg = new Image()
            newImg.src = url
            newImg.onload = () => {
                console.log(newImg.naturalWidth, newImg.naturalHeight)
            }
        })
    }, [])

    return null
})

When I log it to the console, I get 2880 1592, however my screen resolution is half of it 1440 796.

How do I get an image according to my screen resolution rather than double of it?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
等待大神答复

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...