diff --git a/community/kphotoalbum/APKBUILD b/community/kphotoalbum/APKBUILD
index a249fc194079fa843de9acb96b8267544d666b83..2e7ab56e506d0e410785954ec9bf06e51587dfa1 100644
--- a/community/kphotoalbum/APKBUILD
+++ b/community/kphotoalbum/APKBUILD
@@ -2,7 +2,7 @@
 # Maintainer: Bart Ribbers <bribbers@disroot.org>
 pkgname=kphotoalbum
 pkgver=5.10.0
-pkgrel=0
+pkgrel=1
 pkgdesc="KDE Photo Album, picture collection manager"
 url="https://kphotoalbum.org"
 # armhf blocked my extra-cmake-modules
@@ -35,7 +35,9 @@ makedepends="
 	"
 checkdepends="xvfb-run"
 subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/kphotoalbum/$pkgver/kphotoalbum-$pkgver.tar.xz"
+source="https://download.kde.org/stable/kphotoalbum/$pkgver/kphotoalbum-$pkgver.tar.xz
+	exiv2-0.28.patch
+	"
 
 build() {
 	cmake -B build -G Ninja \
@@ -56,4 +58,5 @@ package() {
 
 sha512sums="
 6e6e3d3173f2783c05319c6a372553e92b97174a43307d2bd1fdfa0eb6751bab435e61e07e1c33496254e6f53dd95032adf002899c68475dac7af7ad575c28cc  kphotoalbum-5.10.0.tar.xz
+cbf1cfd3b9956a6a99ba6fcda8f2b2800d03a38171fdf1dd952fec820f84378aa0ea750760b92d4db3967924bdc5286a64624dfcb2b862567273d0f447f564b6  exiv2-0.28.patch
 "
diff --git a/community/kphotoalbum/exiv2-0.28.patch b/community/kphotoalbum/exiv2-0.28.patch
new file mode 100644
index 0000000000000000000000000000000000000000..455efe490f0928bace82f336025b1c8525f4160e
--- /dev/null
+++ b/community/kphotoalbum/exiv2-0.28.patch
@@ -0,0 +1,115 @@
+Patch-Source: https://gitlab.archlinux.org/archlinux/packaging/packages/kphotoalbum/-/blob/ad00a492ca37a83c1d35d96480d64fe53966f00c/exiv2-0.28.patch
+--
+diff --git a/DB/FileInfo.cpp b/DB/FileInfo.cpp
+index dc4c9819..a04e2c0f 100644
+--- a/DB/FileInfo.cpp
++++ b/DB/FileInfo.cpp
+@@ -13,6 +13,8 @@
+ #include <QFileInfo>
+ #include <QRegularExpression>
+ 
++#include <exiv2/version.hpp>
++
+ using namespace DB;
+ 
+ FileInfo FileInfo::read(const DB::FileName &fileName, DB::ExifMode mode)
+@@ -80,7 +82,11 @@ void DB::FileInfo::parseEXIV2(const DB::FileName &fileName)
+ 
+         int orientation = 0;
+         if (datum.count() > 0)
++#if EXIV2_TEST_VERSION(0,28,0)
++            orientation = datum.toUint32();
++#else
+             orientation = datum.toLong();
++#endif
+         m_angle = orientationToAngle(orientation);
+     }
+ 
+diff --git a/lib/kpaexif/Database.cpp b/lib/kpaexif/Database.cpp
+index 4d0e228c..c34250ac 100644
+--- a/lib/kpaexif/Database.cpp
++++ b/lib/kpaexif/Database.cpp
+@@ -21,6 +21,7 @@
+ #include <QSqlQuery>
+ #include <exiv2/exif.hpp>
+ #include <exiv2/image.hpp>
++#include <exiv2/version.hpp>
+ 
+ using namespace Exif;
+ 
+@@ -320,7 +321,11 @@ bool Exif::Database::add(const DB::FileName &fileName)
+         return false;
+ 
+     try {
++#if EXIV2_TEST_VERSION(0,28,0)
++        Exiv2::Image::UniquePtr image = Exiv2::ImageFactory::open(fileName.absolute().toLocal8Bit().data());
++#else
+         Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(fileName.absolute().toLocal8Bit().data());
++#endif
+         Q_ASSERT(image.get() != nullptr);
+         image->readMetadata();
+         Exiv2::ExifData &exifData = image->exifData();
+@@ -341,7 +346,11 @@ bool Exif::Database::add(const DB::FileNameList &list)
+ 
+     for (const DB::FileName &fileName : list) {
+         try {
++#if EXIV2_TEST_VERSION(0,28,0)
++            Exiv2::Image::UniquePtr image = Exiv2::ImageFactory::open(fileName.absolute().toLocal8Bit().data());
++#else
+             Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(fileName.absolute().toLocal8Bit().data());
++#endif
+             Q_ASSERT(image.get() != nullptr);
+             image->readMetadata();
+             map << DBExifInfo(fileName, image->exifData());
+diff --git a/lib/kpaexif/DatabaseElement.cpp b/lib/kpaexif/DatabaseElement.cpp
+index 4e7ba198..94b3e1f8 100644
+--- a/lib/kpaexif/DatabaseElement.cpp
++++ b/lib/kpaexif/DatabaseElement.cpp
+@@ -8,6 +8,7 @@
+ 
+ #include <QVariant>
+ #include <exiv2/exif.hpp>
++#include <exiv2/version.hpp>
+ 
+ static QString replaceDotWithUnderscore(const char *cstr)
+ {
+@@ -77,7 +78,11 @@ QString Exif::IntExifElement::queryString() const
+ QVariant Exif::IntExifElement::valueFromExif(Exiv2::ExifData &data) const
+ {
+     if (data[m_tag].count() > 0)
++#if EXIV2_TEST_VERSION(0,28,0)
++        return QVariant { (int)data[m_tag].toUint32() };
++#else
+         return QVariant { (int)data[m_tag].toLong() };
++#endif
+     else
+         return QVariant { (int)0 };
+ }
+diff --git a/lib/kpaexif/Info.cpp b/lib/kpaexif/Info.cpp
+index 5f77fc81..2e7024d6 100644
+--- a/lib/kpaexif/Info.cpp
++++ b/lib/kpaexif/Info.cpp
+@@ -166,7 +166,11 @@ Info::Info()
+ void Exif::writeExifInfoToFile(const DB::FileName &srcName, const QString &destName, const QString &imageDescription)
+ {
+     // Load Exif from source image
++#if EXIV2_TEST_VERSION(0,28,0)
++    Exiv2::Image::UniquePtr image = Exiv2::ImageFactory::open(QFile::encodeName(srcName.absolute()).data());
++#else
+     Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(QFile::encodeName(srcName.absolute()).data());
++#endif
+     image->readMetadata();
+     Exiv2::ExifData data = image->exifData();
+ 
+@@ -201,7 +205,11 @@ Exif::Metadata Exif::Info::metadata(const DB::FileName &fileName)
+ {
+     try {
+         Exif::Metadata result;
++#if EXIV2_TEST_VERSION(0,28,0)
++        Exiv2::Image::UniquePtr image = Exiv2::ImageFactory::open(QFile::encodeName(fileName.absolute()).data());
++#else
+         Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(QFile::encodeName(fileName.absolute()).data());
++#endif
+         Q_ASSERT(image.get() != nullptr);
+         image->readMetadata();
+         result.exif = image->exifData();