Flask项目植物上传图片真实性验证优化方案咨询
植物图片原创验证Flask项目需求补充
我正在开发一个Python Flask项目,核心功能是验证用户上传的图片,确保其真实无抄袭。当前核心需求是:用户上传植物图片时,必须确认图片为用户自行拍摄,而非来自网络或平台内其他用户。
目前我已经完成了以下初步检查,但仍存在不足,现寻求补充方案:
- A)图片质量检测
- B)网络图片检测
- C)数据库重复检测
- D)经纬度验证(效果极差,误差达2公里)
- E)植物图片校验
由于现有定位方法存在漏洞且效果不佳,项目无需超高安全级别,希望找到可替代精准定位的同类技术或方案,以此确保图片为用户原创。
以下是当前使用的定位相关代码:
# EXIF提取函数 def get_exif_data(image_path): """使用ExifRead从图片文件中获取嵌入的EXIF数据。""" with open(image_path, 'rb') as image_file: tags = exifread.process_file(image_file) return tags def get_gps_data(tags): """从EXIF标签中提取GPS数据。""" gps_data = {} gps_keys = ['GPS GPSLatitude', 'GPS GPSLatitudeRef', 'GPS GPSLongitude', 'GPS GPSLongitudeRef'] for key in gps_keys: if key in tags: gps_data[key] = tags[key] return gps_data def convert_to_degrees(value): """将GPS坐标转换为度数,避免除零错误。""" def safe_div(num, den): return float(num) / float(den) if den != 0 else 0 if len(value.values) != 3: print("GPS坐标数据不完整。") return None d = safe_div(value.values[0].num, value.values[0].den) m = safe_div(value.values[1].num, value.values[1].den) s = safe_div(value.values[2].num, value.values[2].den) return d + (m / 60.0) + (s / 3600.0) def get_lat_lon(gps_data): """从GPS数据中提取纬度和经度。""" lat = None lon = None gps_latitude = gps_data.get('GPS GPSLatitude') gps_latitude_ref = gps_data.get('GPS GPSLatitudeRef') gps_longitude = gps_data.get('GPS GPSLongitude') gps_longitude_ref = gps_data.get('GPS GPSLongitudeRef') if gps_latitude and gps_latitude_ref and gps_longitude and gps_longitude_ref: lat = convert_to_degrees(gps_latitude) lon = convert_to_degrees(gps_longitude) if lat is None or lon is None: return None, None if gps_latitude_ref.values[0] != 'N': lat = -lat if gps_longitude_ref.values[0] != 'E': lon = -lon return lat, lon def extract_gps_from_image(image_path): tags = get_exif_data(image_path) gps_data = get_gps_data(tags) lat, lon = get_lat_lon(gps_data) return lat, lon
内容的提问来源于stack exchange,提问作者Preran S Gowda
相关产品推荐
相关产品推荐

