遇到格式不正确的数值 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"] 将变为 [1235656]
  • list($red, $green, $blue) 会将 array 值分配给每个变量; $red$green$blue