diff --git a/KeePassium/database/entry/edit/EntryFieldEditorCells.swift b/KeePassium/database/entry/edit/EntryFieldEditorCells.swift index f05ff2319..32a20ae4d 100755 --- a/KeePassium/database/entry/edit/EntryFieldEditorCells.swift +++ b/KeePassium/database/entry/edit/EntryFieldEditorCells.swift @@ -90,7 +90,7 @@ class EntryFieldEditorTitleCell: guard let field else { return } let buttonConfig = delegate?.getActionConfiguration(for: field) buttonConfig?.apply(to: iconButton) - iconButton.configuration?.image = icon?.downscalingToSquare(maxSide: 29) + iconButton.configuration?.image = icon?.downscalingToSquare(maxSidePoints: 30) titleTextField.text = field.value } diff --git a/KeePassium/database/group/GroupEditorTitleCell.swift b/KeePassium/database/group/GroupEditorTitleCell.swift index aefebc7d2..6b1bfa4c7 100644 --- a/KeePassium/database/group/GroupEditorTitleCell.swift +++ b/KeePassium/database/group/GroupEditorTitleCell.swift @@ -63,7 +63,7 @@ final class GroupEditorTitleCell: UITableViewCell { didSet { nameTextField.text = group?.name let icon = (group != nil) ? UIImage.kpIcon(forGroup: group!) : nil - iconButton.configuration?.image = icon?.downscalingToSquare(maxSide: 29) + iconButton.configuration?.image = icon?.downscalingToSquare(maxSidePoints: 30) delegate?.didChangeValidity(isValid: nameTextField.isValid, in: self) } } diff --git a/KeePassiumLib/KeePassiumLib/db/kp2/CustomIcon2.swift b/KeePassiumLib/KeePassiumLib/db/kp2/CustomIcon2.swift index a9048ec23..a6a6d70df 100755 --- a/KeePassiumLib/KeePassiumLib/db/kp2/CustomIcon2.swift +++ b/KeePassiumLib/KeePassiumLib/db/kp2/CustomIcon2.swift @@ -9,7 +9,7 @@ import Foundation public class CustomIcon2: Eraseable { - public static let maxSide = CGFloat(128) + public static let maxSidePixels = CGFloat(120) public private(set) var uuid: UUID public private(set) var data: ByteArray diff --git a/KeePassiumLib/KeePassiumLib/db/kp2/Database2.swift b/KeePassiumLib/KeePassiumLib/db/kp2/Database2.swift index ab0bfbb00..dfaef79a0 100644 --- a/KeePassiumLib/KeePassiumLib/db/kp2/Database2.swift +++ b/KeePassiumLib/KeePassiumLib/db/kp2/Database2.swift @@ -1329,7 +1329,7 @@ public class Database2: Database { } public func addCustomIcon(_ image: UIImage) -> CustomIcon2? { - guard let normalizedImage = image.downscalingToSquare(maxSide: CustomIcon2.maxSide) else { + guard let normalizedImage = image.downscalingToSquare(maxSidePixels: CustomIcon2.maxSidePixels) else { Diag.error("Failed to normalize the image, cancelling") return nil } diff --git a/KeePassiumLib/KeePassiumLib/util/UIImage+downscaling.swift b/KeePassiumLib/KeePassiumLib/util/UIImage+downscaling.swift index 8ae52ebe9..a4e6c5555 100644 --- a/KeePassiumLib/KeePassiumLib/util/UIImage+downscaling.swift +++ b/KeePassiumLib/KeePassiumLib/util/UIImage+downscaling.swift @@ -10,16 +10,20 @@ import UIKit public extension UIImage { - func downscalingToSquare(maxSide: CGFloat) -> UIImage? { + func downscalingToSquare(maxSidePixels: CGFloat) -> UIImage? { + return downscalingToSquare(maxSidePoints: maxSidePixels / UIScreen.main.scale) + } + + func downscalingToSquare(maxSidePoints: CGFloat) -> UIImage? { let targetSide: CGFloat - if size.width > maxSide && size.height > maxSide { - targetSide = maxSide + if size.width > maxSidePoints && size.height > maxSidePoints { + targetSide = maxSidePoints } else { targetSide = min(size.width, size.height) } let targetSize = CGSize(width: targetSide, height: targetSide) - UIGraphicsBeginImageContextWithOptions(targetSize, false, 0.0) + UIGraphicsBeginImageContextWithOptions(targetSize, false, UIScreen.main.scale) self.draw(in: CGRect(x: 0, y: 0, width: targetSide, height: targetSide)) let resized = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext()