我找到了用于编辑Exif的各种代码和库.
但是当图像宽度和高度是16的倍数时,它们只是无损.
我正在寻找一个库(甚至是我自己的方法)来编辑JPEG文件中的Exif部分(或者如果它还不存在则添加Exif数据),而不修改其他数据.那可能吗?
到目前为止,我只能找到Exif部分(以0xFFE1开头),但我不明白如何读取数据.
我使用piexif更改jpeg上的exif来读写exif数据,这似乎工作正常。问题是,当我读写jpeg时,即使不更改字节,它也会保存具有不同像素的图片和读取的图片。我需要它是完全相同的像素。我了解这是因为jpeg是有损格式,但是我发现它的唯一方法是将其保存为png,然后使用Mac Preview将其导出为jpeg,这不好,因为我有数百张图片。
def adjust_img(path):
img = PIL.Image.open(path)
exif_dict = piexif.load(img.info['exif'])
new_exif = adjust_exif(exif_dict)
exif_bytes = piexif.dump(new_exif)
pc = path.split('/')
stem = '/'.join(pc[:-1])
img.save('%s/_%s' % (stem,pc[-1]), "JPEG", exif=exif_bytes, quality=95, optimize=False)
Run Code Online (Sandbox Code Playgroud)
如何保存图片并仅更改exif?
有谁知道如何在 c# asp.net core 中压缩任何类型(jpg、png、gif 等)的图像。WebP 在核心上不起作用。我下载了 ImageProcessor Core 库,但不知道如何压缩/降低图像质量。这是我们尝试过的,但没有奏效。
newImage.Quality = old_image.Quality-20;
newImage.HorizontalResolution = 0;
newImage.VerticalResolution = 0;
Run Code Online (Sandbox Code Playgroud)