【问题标题】:A non well formed numeric value encountered Laravel SimpleQrcodeLaravel SimpleQrcode 遇到格式不正确的数值
【发布时间】:2020-07-27 17:57:13
【问题描述】:

我正在研究简单的 qrcode laravel。 我正在尝试将颜色以 rgba 格式(ajax)存储在数据库中以获取特定 id 的 qrcode 的背景颜色,并将其作为变量调用以更改 qr 代码的 bgcolor。我不能使用 hex 格式,因为 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'));

有人告诉我更新作曲家。我已经更新了。

【问题讨论】:

  • bgcolor的内容是什么?
  • 一种颜色的rgba格式
  • 所以你有像#ffffff 这样的内容,对吗?
  • dd($html);结果:“135、56、56”
  • 因为依赖不接受十六进制格式,所以我存储了 rgba 格式,例如 0,0,0 但它显示了这个错误

标签: laravel qr-code


【解决方案1】:

根据您的评论; 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', []) 将遍历 字符串数组 以将它们转换为 int 数组:["123""56""56"] 将变为 [@ 987654339@、5656]
  • list($red, $green, $blue) 会将 array 值分配给每个变量; $red$green$blue

【讨论】:

  • 通知; explode(', ', $article->bgcolor) 我编辑删除了多余的“空格”字符。因为intval 会忽略它,但是如果某些颜色没有这个空间,你会遇到问题。
  • 非常感谢兄弟......它工作得很好......上帝保佑你..我在这个问题上摸索了 3 天,但一切顺利......再次感谢
  • 没问题 :) 我很高兴它能正常工作。别忘了接受我的回答
猜你喜欢
  • 1970-01-01
  • 2014-09-18
  • 1970-01-01
相关资源
最近更新 更多