Django Конвертация HEIC в PNG
Я пытаюсь конвертировать heic в png, чего я успешно добился в Python с помощью библиотеки Wand. Я также сохранил файл локально, чтобы проверить, работает ли конвертация, и она сработала. Проблема в том, что сериализатор Django не может принять изображение Wand, и мне приходится конвертировать его в InMemoryUploadedFile. Что бы я ни делал, я все равно не могу заставить сериализатор принять преобразованное изображение.
views.py update_post()
@api_view(['PUT'])
@permission_classes([IsAuthenticated])
def update_post(request, id):
image = request.FILES['image']
print(image.size, image.name, image.file,
image.content_type, image.field_name)
if image.content_type == 'image/heif':
img = Image(file=image)
img.format = 'png'
img_io = io.BytesIO()
img.save(file=img_io)
filename = image.name.replace('.heic', '.png')
img.save(filename=filename)
img_file = InMemoryUploadedFile(
img_io,
'image',
filename,
'image/png',
sys.getsizeof(img_io),
None)
print(img_file.size, img_file.name, img_file.file,
img_file.content_type, img_file.field_name)
image = img_file
#request.data['image'] = img_file
#request.FILES['image'] = img_file
# data = request.data
# print(img_file, image)
loggedin_user = request.user.username
post = Post.objects.get(id=id)
post_user = post.user
if (str(post_user) == str(loggedin_user)):
serializer = PostSerializer(
instance=post, data={'caption': request.data['caption'], 'image': image})
if serializer.is_valid():
print(serializer.validated_data)
serializer.save()
else:
print('achjo')
print(serializer.data)
return Response(status=status.HTTP_200_OK)