中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

有了ChatGPT編程是否還需要那么多庫

發布時間:2023-04-13 09:44:46 來源:億速云 閱讀:114 作者:iii 欄目:開發技術

這篇文章主要介紹了有了ChatGPT編程是否還需要那么多庫的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇有了ChatGPT編程是否還需要那么多庫文章都會有所收獲,下面我們一起來看看吧。

瀑布流展示圖片的新需求

我已經可以生成一些圖片了,但是光看圖片我能看出什么來?我需要展示出圖片和圖片的信息。這可能就要專門開發一下了。

我當時想,這個可能有點難,他是個前后端都有的程序。所以我就本能的想到,要不要找找有個庫沒有,先找個瀑布流展示圖片的現成的庫,在上面稍微改改可能是比較簡單的做法。害怕ChatGPT不行,我還去問了new bing,我想著,newbing的知識更新一點,于是我問:

指定一個path直接啟動一個nodejs server,通過localhost訪問,以瀑布流形式展示path下所有圖片的npm工具

結果他建議我使用node-static的庫,于是我就追問了一些怎么用node-static庫的方式去寫代碼,得到的代碼可能由于知識過時,反正是不能用的,我就不貼在這里了。

有點沮喪,這稍微用點庫你就給我撂挑子,你這果然也不行啊,一用庫就出錯,你這果然勝任不了復雜開發。new bing不靠譜,我就又去問ChatGPT,一開始我問得有問題,我直接問:

用node-static庫怎么實現:指定一個path直接啟動一個nodejs server,通過localhost訪問,以瀑布流形式展示path下所有圖片

結果顯示的代碼果然是不能用的,我心想對啊,new bing都沒有新數據,你這個數據豈不是更糟糕?但是靈機一動之下,我也沒退出,我就問

上面的代碼不能運行,有沒有別的辦法?

然后我得到了下面的回答:

可以使用Node.js的http和fs模塊來啟動一個HTTP服務器,并且使用path模塊來獲取文件路徑,以及使用mime模塊來獲取文件的MIME類型,然后通過HTML和CSS來創建一個簡單的瀑布流布局。

以下是一個示例代碼:

const http = require('http');
const fs = require('fs');
const path = require('path');
const mime = require('mime');
const PORT = 3000;
const PATH = './path'; // 設置圖片目錄的路徑
http.createServer((req, res) => {
console.log(`Request for ${req.url}`);
// 如果請求的是根路徑,返回圖片列表頁面
if (req.url === '/') {
    res.writeHead(200, { 'Content-Type': 'text/html' });
    // 讀取圖片目錄下的所有文件
    fs.readdir(PATH, (err, files) => {
    if (err) {
        console.error(err);
        res.end('Error reading directory');
        return;
    }
    // 使用HTML和CSS創建瀑布流布局
    res.write(`
        <html>
        <head>
            <title>Image Gallery</title>
            <style>
            .container {
                display: grid;
                grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
                grid-gap: 10px;
            }
            .item {
                position: relative;
            }
            .item img {
                width: 100%;
                height: auto;
            }
            .item .caption {
                position: absolute;
                bottom: 0;
                left: 0;
                right: 0;
                background-color: rgba(0, 0, 0, 0.5);
                color: #fff;
                padding: 5px;
            }
            </style>
        </head>
        <body>
            <div class="container">
    `);
    // 遍歷所有文件,并在瀑布流布局中展示圖片和文件名
    files.forEach((file) => {
        const filePath = path.join(PATH, file);
        const mimeType = mime.getType(filePath);
        if (mimeType && mimeType.startsWith('image/')) {
        res.write(`
            <div class="item">
            <img src="${filePath}" alt="${file}">
            <div class="caption">${file}</div>
            </div>
        `);
        }
    });
    res.write(`
            </div>
        </body>
        </html>
    `);
    res.end();
    });
} else {
    // 否則,返回請求的文件
    const filePath = path.join(PATH, req.url);
    const mimeType = mime.getType(filePath);
    if (mimeType && mimeType.startsWith('image/')) {
    // 如果請求的是圖片文件,則返回圖片數據
    fs.readFile(filePath, (err, data) => {
        if (err) {
        console.error(err);
        res.writeHead(404);
        res.end('Not found');
        return;
        }
        res.writeHead(200, { 'Content-Type': mimeType });
        res.end(data);
    });
    } else {
    // 否則,返回404錯誤
    res.writeHead(404);
    res.end('Not found');
    }
}
}).listen(PORT);
console.log(`Server running at http://localhost:${PORT}`);

將上述代碼保存為app.js文件,然后在終端中進入該文件所在的目錄,并運行以下命令: node app.js 運行該命令后,服務器將會在本地3000端口上啟動。您可以在瀏覽器中輸入

http://localhost:3000/來查看圖片列表,其中/表示根路徑,這將會顯示圖片列表頁面,瀑布流形式展示path下所有圖片。如果您想直接訪問某張圖片,可以通過輸入其文件名來訪問,例如http://localhost:3000/example.jpg。

請注意,在上述示例中,我們假設所有圖片文件的MIME類型都以image/開頭,這通常是正確的,但如果您的圖片文件類型不同,則可能需要修改相關代碼。

咦?可以用原生寫法啊,我立刻修改了自己的提問:

我需要用nodejs寫一個后端服務,可以指定一個文件夾,按瀑布流顯示下面所有的png圖片。 要求:

可以通過傳參指定任意基于index.js的相對文件夾及子文件夾

要并排顯示png圖片和png圖片文件中的文本信息

頁面要用BootStrap布局

我有一個模塊:'./util/png_info/index'。 該模塊導出的對象上有一個異步函數 readPng 可以讀取 PNG 圖像文件中的文本信息。不用實現,其簽名為:

async function readPng(filePath) {
//....
}

指定index.js所在文件夾為靜態文件夾

我得到了可以執行的代碼:

const express = require('express');
const path = require('path');
const fs = require('fs');
const { readPng } = require('./util/png_info');
const app = express();
// 設置靜態文件夾
app.use(express.static(path.join(__dirname)));
app.get('/images', async (req, res) => {
try {
    const folderPath = req.query.folder;
    const images = await getImages(folderPath);
    const imagesHTML = await Promise.all(
    images.map(async (image) => {
        const info = await readPng(image.path);
        return `
        <div class="col-md-3">
            <img src="${image.url}" class="img-thumbnail" alt="${image.name}">
            <div class="text-muted">${info}</div>
        </div>
        `;
    })
    );
    const html = `
    <html>
        <head>
        <title>Image Gallery</title>
        <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.3.2/css/bootstrap.min.css" rel="external nofollow"  rel="stylesheet">
        </head>
        <body>
        <div class="container">
            <div class="row">
            ${imagesHTML.join('')}
            </div>
        </div>
        </body>
    </html>
    `;
    res.send(html);
} catch (error) {
    console.error(error);
    res.status(500).send('Internal Server Error');
}
});
async function getImages(folderPath) {
const images = [];
const files = await fs.promises.readdir(folderPath, { withFileTypes: true });
for (const file of files) {
    if (file.isDirectory()) {
    const subfolderPath = path.join(folderPath, file.name);
    const subfolderImages = await getImages(subfolderPath);
    images.push(...subfolderImages);
    } else if (file.name.endsWith('.png')) {
    const url = path.join('/', path.relative(__dirname, folderPath), file.name).replace(/\\/g, '/');
    images.push({ name: file.name, path: path.join(folderPath, file.name), url });
    }
}
return images;
}
const port = process.env.PORT || 3000;
app.listen(port, () => {
console.log(`Server listening on port ${port}`);
});

關于“有了ChatGPT編程是否還需要那么多庫”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“有了ChatGPT編程是否還需要那么多庫”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新民市| 平遥县| 德令哈市| 麟游县| 丰台区| 鄂托克旗| 福安市| 喀喇沁旗| 龙岩市| 万盛区| 连城县| 巩义市| 双江| 宜丰县| 宕昌县| 胶南市| 和平区| 濮阳市| 奉节县| 大荔县| 南郑县| 牟定县| 滦平县| 湖州市| 公主岭市| 南丰县| 焦作市| 周宁县| 桦南县| 友谊县| 承德市| 炉霍县| 江口县| 衡山县| 柳江县| 博兴县| 邵阳县| 西丰县| 武冈市| 泰顺县| 巴塘县|