删除重复照片可以通过比较照片的哈希值来实现。哈希值可以唯一地标识一张照片,如果两张照片的哈希值相同,则它们是相同的图片。以下是一个使用 Node.js 和 image-hash
库来删除重复照片的示例代码。
首先,安装所需的依赖库:
npm install fs path image-hash
然后,编写一个脚本来删除重复的照片:
const fs = require('fs'); const path = require('path'); const { createHash } = require('crypto'); const { getImageHash } = require('image-hash'); const directoryPath = './photos'; // 替换为你的照片目录 async function getPhotoHashes(directory) { const files = fs.readdirSync(directory); const photoHashes = new Map(); for (const file of files) { const filePath = path.join(directory, file); if (fs.statSync(filePath).isFile()) { try { const hash = await getImageHash(filePath); if (photoHashes.has(hash)) { photoHashes.get(hash).push(filePath); } else { photoHashes.set(hash, [filePath]); } } catch (error) { console.error(`无法处理文件 ${filePath}: ${error.message}`); } } } return photoHashes; } async function deleteDuplicatePhotos(directory) { const photoHashes = await getPhotoHashes(directory); for (const [hash, filePaths] of photoHashes) { if (filePaths.length > 1) { console.log(`发现重复照片,哈希值: ${hash}`); for (let i = 1; i < filePaths.length; i++) { const filePath = filePaths[i]; console.log(`删除文件: ${filePath}`); fs.unlinkSync(filePath); } } } } deleteDuplicatePhotos(directoryPath) .then(() => console.log('删除重复照片完成')) .catch(error => console.error(`发生错误: ${error.message}`));
这个脚本的工作原理如下:
fs.readdirSync
读取指定目录中的所有文件。image-hash
库计算每张照片的哈希值。Map
存储每张照片的哈希值及其对应的文件路径。你可以将这段代码保存到一个文件中(例如 deleteDuplicatePhotos.js
),然后在命令行中运行:
node deleteDuplicatePhotos.js
标签: 来源:
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。