遇到格式不正确的数值 Laravel SimpleQrcode
A non well formed numeric value encountered Laravel SimpleQrcode
我正在研究简单的二维码 laravel。
我正在尝试在数据库中以 rgba 格式 (ajax) 存储特定 id 的二维码背景颜色的颜色,并将其作为变量调用以更改二维码的 bgcolor。我不能使用十六进制格式,因为 simpleqrcode 依赖只接受 rgba 格式。
所以我将 rgba 存储在数据库中,当我将它调用到控制器时它显示错误。
遇到格式不正确的数值。
我进一步研究了当我从数据库中调用颜色时它默认带有引号,我试图用 str_replace 替换它但没有用。
这是我的代码:
public function qrcode($id){
$article = Article::find($id);
$rgba = $article->bgcolor;
$html = str_replace('"', '', $rgba);
$image_path = \QrCode::format('png')
// ->merge('../storage/app/public/'.$article->image, .15, true)
->size(200)
->backgroundColor($html)
->errorCorrection('H')
->generate('127.0.0.1:8000/articles/'.$article->id , '../public/Qrcodes'.$article->image);
// dd($article->bgcolor);
// $image = '../public/'.$article->image;
return view('articles.modify_qrcode', compact('article'));
有人告诉我更新作曲家。我已经更新了
根据您的评论;
dd($html); result: "135, 56, 56"
你代码
$rgba = $article->bgcolor;
$html = str_replace('"', '', $rgba);
将使用字符串值 "135,56,56"
创建变量 $html
但是您需要 3 个整数变量 $red
、$green
和 $blue
,因为 backgroundColor(int $red, int $green, int $blue, ?int $alpha = null)
分别取 3 种颜色。
你能做的是;
$article = Article::find($id);
list($red, $green, $blue) = array_map('intval', explode(',', $article->bgcolor));
$image_path = \QrCode::format('png')
->size(200)
->backgroundColor($red, $green, $blue)
->errorCorrection('H')
->generate('127.0.0.1:8000/articles/'.$article->id , '../public/Qrcodes'.$article->image);
解释:
explode(',', $article->bgcolor)
将 字符串 "135, 56, 56"
转换为 字符串数组 :["123"
、"56"
和 "56"
]
array_map('intval', [])
将遍历 字符串 数组,将它们转换为 整数 数组:["123"
、"56"
和 "56"
] 将变为 [123
、56
和 56
]
list($red, $green, $blue)
会将 array 值分配给每个变量; $red
、$green
和 $blue
我正在研究简单的二维码 laravel。 我正在尝试在数据库中以 rgba 格式 (ajax) 存储特定 id 的二维码背景颜色的颜色,并将其作为变量调用以更改二维码的 bgcolor。我不能使用十六进制格式,因为 simpleqrcode 依赖只接受 rgba 格式。
所以我将 rgba 存储在数据库中,当我将它调用到控制器时它显示错误。 遇到格式不正确的数值。 我进一步研究了当我从数据库中调用颜色时它默认带有引号,我试图用 str_replace 替换它但没有用。
这是我的代码:
public function qrcode($id){
$article = Article::find($id);
$rgba = $article->bgcolor;
$html = str_replace('"', '', $rgba);
$image_path = \QrCode::format('png')
// ->merge('../storage/app/public/'.$article->image, .15, true)
->size(200)
->backgroundColor($html)
->errorCorrection('H')
->generate('127.0.0.1:8000/articles/'.$article->id , '../public/Qrcodes'.$article->image);
// dd($article->bgcolor);
// $image = '../public/'.$article->image;
return view('articles.modify_qrcode', compact('article'));
有人告诉我更新作曲家。我已经更新了
根据您的评论;
dd($html); result: "135, 56, 56"
你代码
$rgba = $article->bgcolor;
$html = str_replace('"', '', $rgba);
将使用字符串值 "135,56,56"
创建变量 $html
但是您需要 3 个整数变量 $red
、$green
和 $blue
,因为 backgroundColor(int $red, int $green, int $blue, ?int $alpha = null)
分别取 3 种颜色。
你能做的是;
$article = Article::find($id);
list($red, $green, $blue) = array_map('intval', explode(',', $article->bgcolor));
$image_path = \QrCode::format('png')
->size(200)
->backgroundColor($red, $green, $blue)
->errorCorrection('H')
->generate('127.0.0.1:8000/articles/'.$article->id , '../public/Qrcodes'.$article->image);
解释:
explode(',', $article->bgcolor)
将 字符串"135, 56, 56"
转换为 字符串数组 :["123"
、"56"
和"56"
]array_map('intval', [])
将遍历 字符串 数组,将它们转换为 整数 数组:["123"
、"56"
和"56"
] 将变为 [123
、56
和56
]list($red, $green, $blue)
会将 array 值分配给每个变量;$red
、$green
和$blue