最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Node.js的:读取该被覆盖的图片,引用初始图像只

运维笔记admin10浏览0评论

Node.js的:读取该被覆盖的图片,引用初始图像只

Node.js的:读取该被覆盖的图片,引用初始图像只

我基本上覆盖内overwriteME.jpg

const screenshotDesktop = require('screenshot-desktop')
const sharp = require('sharp');

(async () => {

      while (1 < 5){
        var currentShot = screenshotDesktop.all()
        .then(imgs => {
            return  fs.writeFile(`/Users/ga/proj/overwriteME.jpg`, imgs[0], (err) => {
                    if (err) throw err;
                    crop();
            });
        });
         await delay(1000);

       }
   async function crop(crop){

       // original size from metadata
       var resizedImage = await sharp('/Users/ga/proj/overwriteME.jpg');
       var metadata = await resizedImage.metadata();
       console.log(metadata);
   };

})();


function delay(timeout) {
  return new Promise((resolve) => {
    setTimeout(resolve, timeout);
  });
}

我希望不同的元数据,因为我是在一个视频播放的截屏在屏幕上覆盖overwriteME.jpg,并采用了夏普提取元数据。

实际发生的事情正在返回相同的元数据,当我以为锐将反映文件的变化。

不知怎的,该文件被改变,但是当锋利的读取它,它引用在年初的方式相同的老照片。

回答如下:

你可能有一个竞争条件不混合和await await-ING原料的承诺。尝试用= screenshotDesktop.all()更换= await screenshotDesktop.all()。您也可以使用专门await精简代码(不知道while (1 < 5)意味着什么,顺便说一句):

'use strict';

const fs = require('fs').promises;

const screenshotDesktop = require('screenshot-desktop');
const sharp = require('sharp');

(async () => {
  while (1 < 5) {
    const imgs = await screenshotDesktop.all();
    await fs.writeFile('/Users/ga/proj/overwriteME.jpg', imgs[0]);
    await crop();
  }
})();

async function crop() {
  const resizedImage = await sharp('/Users/ga/proj/overwriteME.jpg');
  const metadata = await resizedImage.metadata();
  console.log(metadata);
}
发布评论

评论列表(0)

  1. 暂无评论