我需要一些建议。我已经构建了一个工具,可以对上传的图片进行图像操作并保存结果。每次操作完成后,它都会在其文件夹中的JSON文件中创建一个条目。 因此,如果没有JSON,它会创建一个新的JSON,如果有JSON,它会附加信息。问题是,如果有人意外添加了已经添加的图像,json会再次附加信息。
这里发布的代码太多了,但如果有人就如何在追加之前比较文件或其他方面提出一些建议,我会感激不尽。
答案 0 :(得分:0)
“它的代码太多了”,所以我只想制定方法基础:)。
如果您在退出应用程序后从未再次使用同一文件夹,则内存解决方案将起作用。如果您通过图片名称等属性计算重复项,那么您可以使用像HashMap这样的简单解决方案。
HashMap<String,Boolean> hashMapImages = ...
String newImageName = ...
if (! hashMapImages.containsKey(newImageName)){
hashMapImages.put(newImageName,true);
//... append to JSON
}
如果您确实想要内容中的不同图片,则必须为图像设计哈希函数。作为示例,您可以使用散列函数,该函数每隔256个像素对像素值求和。对于随机图像,足以获得独特的哈希值。
int pos = 0;
long hashsum;
while (pos< image.length){
hashsum += image[pos];
pos += 256;
}
long hashKey = hashsum % 65536; //for a 16 bit key
如果您计划再次重复使用同一文件夹,请构建一个额外的JSON文件,该文件仅包含键值(您选择使用哪个键)。在附加之前解析此JSON文件并检查是否有图像。
HashMap<String,Boolean> hashMapImages = loadFromJSONContentFolder();
String key = getKey()
if (! hashMapImages.containsKey(key)){
hashMapImages.put(key,true);
//... append to JSON
}