代码之家  ›  专栏  ›  技术社区  ›  rji rji

下载图像并在nodejs中调整大小

  •  0
  • rji rji  · 技术社区  · 6 年前

    我要做的是从google下载一个图片到我的项目文件夹中的系统存储库中 /download . 接下来,我试图从 download 存储库并调整大小,然后再次将调整大小的图像保存到 /thumbnail 储存库。下面是我写的代码

         //Google URL
         var mainuri = 'http://images.sadhguru.org/sites/default/files/media_files/iso/en/64083-natures-temples.jpg';
                var dir = './download';
    
            if (!fs.existsSync(dir)){
                fs.mkdirSync(dir);
            }
          // CODE TO DOWNLOAD IMAGE FROM GOOGLE 
            var filename = dir+'/file.jpg';
                request.head(mainuri, function(err, res, body){
                  console.log('content-type:', res.headers['content-type']);
                  console.log('content-length:', res.headers['content-length']);
    
                  request(mainuri).pipe(fs.createWriteStream(filename));
                });
    
    
                var resizedir = './thumbnail';
    
                if (!fs.existsSync(resizedir)){
                    fs.mkdirSync(resizedir);
                }
    
          //CODE TO GET IMAGE FROM '/download' REPOSITORY AND RESIZE
                var inputFile=require('path').join(__dirname,'../download/file.jpg'); //GET IMAGE FROM LOCAL
                var outFile = 'thumbnail/newfile.jpg'; // SAVE RESIZED IMAGE PATH 
    
    // ------- CODE REMOVED - ERROR IS COMING HERE -----------
    
               imageresize(inputFile, outFile); // FUNCTION THAT CONTAINS IMAGE RESIZE CODE 
    
    //imageresize FUNCTION
    
                var imageresize = function(inputFile, outFile){
                console.log(inputFile)
                // input stream
                let inStream = fs.createReadStream('C:/Users/rganji/caw/server/download/file.jpg');
    
                // output stream
                let outStream = fs.createWriteStream(outFile, {flags: "w"});
    
                // on error of output file being saved
                outStream.on('error', function() {
                    console.log("Error");
                });
    
                // on success of output file being saved
                outStream.on('close', function() {
                    console.log("Successfully saved file");
                });
    
                // input stream transformer
                // "info" event will be emitted on resize
                let transform = sharp()
                                    .resize({ width: 50, height: 50 })
                                    .on('info', function(fileInfo) {
                                        console.log("Resizing done, file not saved");
                                    });
    
                inStream.pipe(transform).pipe(outStream);
            }   
    

    如果我删除的代码,我评论为代码删除-错误是在这里,那么图像是从谷歌下载。如果我打电话 imageresize 功能然后 下载 正在创建目录,但在目录中找不到任何图像。

    也就是说,如果我分别从谷歌和ResiZeImage函数调用下载,也就是说先从谷歌调用图像下载,然后再调用Image SeriSee,然后它们工作得很好,即我可以在两者中找到图像。 下载 缩略图 目录。但如果在google下载后调用resizeimage函数,则在两个存储库中都找不到任何图像。

    0 回复  |  直到 6 年前
        1
  •  0
  •   Akash Srivastav    6 年前

    在调用 imageresize 功能。试试这个

    request(mainuri).on('end', function() {
        var inputFile=require('path').join(__dirname,'../download/file.jpg'); //GET IMAGE FROM LOCAL
        var outFile = 'thumbnail/newfile.jpg'; // SAVE RESIZED IMAGE PATH 
        imageresize(inputFile, outFile);
    });
    
    推荐文章