所以我试图使用php的gd库裁剪图像的侧面,但是我遇到一个问题,即每当保存图像时背景都会变黑。
我已经尝试过:
class PasswordResetSerializer(serializers.Serializer):
email = serializers.EmailField()
password_reset_form_class = PasswordResetForm
def validate_email(self, value):
self.reset_form = self.password_reset_form_class(data=self.initial_data)
if not self.reset_form.is_valid():
raise serializers.ValidationError(_('Error'))
###### FILTER YOUR USER MODEL ######
if not User.objects.filter(email=value).exists():
raise serializers.ValidationError(_('Invalid e-mail address'))
return value
def save(self):
request = self.context.get('request')
user = User.objects.get(email=request.data.get('email'))
token = Token.objects.get(user=user.id)
uid = urlsafe_base64_encode(force_bytes(user.id)).decode()
template = 'example_message.html'
context = {'usertoken': token, 'reactdomain': 'localhost:3000', 'userid': uid}
opts = {
'use_https': request.is_secure(),
'from_email': getattr(settings, 'DEFAULT_FROM_EMAIL'),
###### USE YOUR TEXT FILE ######
'email_template_name': template,
'extra_email_context': context,
'html_email_template_name': template,
'request': request,
}
self.reset_form.save(**opts)
并且它可以与原始图像配合使用,但是当我在裁剪后的图像上尝试该代码时,没有任何反应。
这是完整的代码:
$background = imagecolorallocate($cropped, 0, 0, 0);
imagecolortransparent($cropped, $background);
imagealphablending($cropped, false);
imagesavealpha($cropped, true);
每当我在imagepng函数中将image变量更改为$ testImage时,我的图像就会保存为透明背景,但不会像我希望的那样裁剪出侧面,但是如果我将变量更改为$ cropped,背景变成黑色。 IMG_CROP_SIDES是唯一可用于裁剪图像侧面的模式。