django - 如何将 ImageString 转换为 Image Django Rest Framework?
问题描述
我正在使用 Asynchttp 从 android 接收我的图像字符串,并且我想将该图像字符串转换为 Django Rest Framework 中的图像..只需将其转换为不将其存储在 ImageField 中
*模型.py
class Food(models.Model):
label=models.TextField(max_length=200)
link = models.FileField(null=False, blank=False)
Image = models.TextField(link, null=True)
class Android(models.Model):
label=models.TextField(max_length=200)
imagestring=models.TextField(null=True,blank=True) //convert this to Image
*序列化器.py
class AndroidSerializers(serializers.HyperlinkedModelSerializer):
class Meta:
model = Android
fields = ('label', 'imagestring')
class FoodSerializers(serializers.HyperlinkedModelSerializer):
class Meta:
model=Food
fields=('url','label','Image','link')
*视图.py
class FoodViewSet(viewsets.ModelViewSet):
queryset = Food.objects.all()
serializer_class =FoodSerializers
class Androids(viewsets.ModelViewSet):
queryset =Android.objects.all()
serializer_class = AndroidSerializers()
解决方案
您可以使用 PIL 库来处理字符串、图像,反之亦然。
from PIL import Image
from io import BytesIO
import base64
im = Image.open(BytesIO(base64.b64decode(data)))
要在序列化程序中使用它,请创建一个自定义字段
class ImageSerializerField(serializers.Field):
def to_representation(self, value):
return value # convert it the way you want to see in json
def to_internal_value(self, data):
im = Image.open(BytesIO(base64.b64decode(data)))
return im
class AndroidSerializers(serializers.HyperlinkedModelSerializer):
imagestring = ImageSerializerField()
class Meta:
model = Android
fields = ('label', 'imagestring')
参考:https ://www.django-rest-framework.org/api-guide/fields/#custom-fields
https://pillow.readthedocs.io/en/stable/
https://github.com/python-pillow/Pillow
推荐阅读
- jquery - 防止子元素拾取点击处理程序
- commercetools - 如何获得特定购物车的 CartDiscounts?
- javascript - 无法以正确的方式附加孩子
- zend-framework - 如何在 .phtml 视图中将外部 php 文件包含在 zend 应用程序文件夹之外
- excel - 如何生成一个随机范围的数字,这些数字总和为结束参数
- python - 计算多指标数据框中的比率(年初值/上年结束值)
- c++ - 使用指定的路径更改目录(路径包括文件名作为字符串)
- javascript - 在 Internet Explorer VBA 中单击 ID 不会注册任何内容?
- javascript - 避免为每个子元素编写事件
- c# - SaveChanges 上的意外 ForeignKey 更改