diff --git a/src/PIL/Image.py b/src/PIL/Image.py
index 816ea94db..4eb2dead6 100644
--- a/src/PIL/Image.py
+++ b/src/PIL/Image.py
@@ -1404,15 +1404,9 @@ class Image:
if 0x0112 not in self._exif:
xmp_tags = self.info.get("XML:com.adobe.xmp")
if xmp_tags:
- match = re.search(r'tiff:Orientation="([0-9])"', xmp_tags)
+ match = re.search(r'tiff:Orientation(="|>)([0-9])', xmp_tags)
if match:
- self._exif[0x0112] = int(match[1])
- else:
- match = re.search(
- r"([0-9])", xmp_tags
- )
- if match:
- self._exif[0x0112] = int(match[1])
+ self._exif[0x0112] = int(match[2])
return self._exif
diff --git a/src/PIL/ImageOps.py b/src/PIL/ImageOps.py
index b26b1858b..48b41d87f 100644
--- a/src/PIL/ImageOps.py
+++ b/src/PIL/ImageOps.py
@@ -601,15 +601,12 @@ def exif_transpose(image):
"Raw profile type exif"
] = transposed_exif.tobytes().hex()
elif "XML:com.adobe.xmp" in transposed_image.info:
- transposed_image.info["XML:com.adobe.xmp"] = re.sub(
+ for pattern in (
r'tiff:Orientation="([0-9])"',
- "",
- transposed_image.info["XML:com.adobe.xmp"],
- )
- transposed_image.info["XML:com.adobe.xmp"] = re.sub(
r"([0-9])",
- "",
- transposed_image.info["XML:com.adobe.xmp"],
- )
+ ):
+ transposed_image.info["XML:com.adobe.xmp"] = re.sub(
+ pattern, "", transposed_image.info["XML:com.adobe.xmp"]
+ )
return transposed_image
return image.copy()