EllipticCurvePublicKey.from_encoded_point takes compressed/uncompressed points. You can obtain those from
public_bytes via a format of
PublicFormat.CompressedPoint and format of
Encoding.X962. SubjectPublicKeyInfo DER serialization is an ASN.1 format with additional structure.
Your assumption of 32 bytes on a secp256r1 key is also incorrect, as a compressed public point adds one byte defining the sign for unambiguous point reconstruction.
CLICK HERE to find out more related problems solutions.