`

gbarcode生成条形码的代码

阅读更多

# Uses subprocesses because
  # 1. ImageMagick/RMagick leaks memory,
  #    and doesn't work in a long-running process. The fork makes it safe.
  # 2. The output from the Gbarcode and ImageMagick is often longer than the pipe buffer,
  #    so we have to empty the buffer from another subprocess
  def BarcodeGenerator.get_barcode_image(barcode_string)
    return BarcodeGenerator.get_subprocess_output do
      barcode_generator = BarcodeGenerator.new
      $stdout.write(barcode_generator.get_barcode_image(barcode_string))
    end
  end

  def initialize
    # we do the imports here to protect long-running processes (like mongrel) from ImageMagick's memory leaks
    require 'RMagick'
    require 'gbarcode'
  end

  def get_barcode_image(string_to_encode)
    if string_to_encode.nil?
      string_to_encode = "No string specified"
    end
    string_to_encode = remove_rails_file_extension(string_to_encode)
    eps_barcode = get_barcode_eps(string_to_encode)
    gif_barcode = convert_eps_to_gif(eps_barcode)
    return gif_barcode
  end

  def remove_rails_file_extension(string_to_encode)
    if string_to_encode[-4..-1] == ".png"
      string_to_encode = string_to_encode[0..-5]
    end
    return string_to_encode
  end

  def get_barcode_eps(string_to_encode)
    barcode_object = Gbarcode.barcode_create(string_to_encode)
    Gbarcode.barcode_encode(barcode_object, Gbarcode::BARCODE_128)
    return BarcodeGenerator.get_subprocess_output do
      Gbarcode.barcode_print(barcode_object, $stdout, Gbarcode::BARCODE_OUT_EPS)
    end
  end

  def convert_eps_to_gif(eps_image)
    base64_eps_image = Base64.encode64(eps_image)
    im = Magick::Image::read_inline(base64_eps_image).first
    im.format = "GIF"
    return BarcodeGenerator.get_subprocess_output do
      im.write($stdout)
    end
  end

  # execute a block's code in a subprocess, returning any output
  def BarcodeGenerator.get_subprocess_output()
    data = ""
    IO.popen('-', 'r+') do |child_filehandle|
      if child_filehandle
        begin
          data = child_filehandle.read
        ensure
          child_filehandle.close_write
        end
      else
        yield
      end
    end
    return data
  end
end

注:1. $stdout是rails的标准输出通道

    2. ImageMagick安装的时候一定要配置ghostscript fonts路径,如:./configure --with-gs-font-dir=/usr/share/ghostscript/8.70/Resource/Font ,否则gbarcode生成的条形码文件是.ep或.eps格式的,ImageMagick不能操作,正确配置

gbarcode生成条形码的代码

 

分享到:
评论

相关推荐

    C#生成条形码源代码

    "C#生成条形码源代码" C#生成条形码示例代码中,我们可以看到使用了ASP.net框架和C#语言来生成条形码。该示例代码使用了System、System.Data、System.Configuration、System.Web、System.Web.Security、System.Web....

    c++ 生成条形码代码

    本文将深入探讨如何在C++中生成条形码代码,以及相关的知识点。 首先,条形码是一种图形表示方式,用于快速、准确地识别和追踪物品。它由不同宽度的黑色和白色条纹组成,对应着一系列数字或字母,可以通过条形码...

    VBA生成条形码.xlsm

    VBA生成条形码,使用VBA代码,批量生成条形码等等,代码开源可见

    C#生成条形码代码

    C#生成条形码代码,使用C#开发的条形码生成使用一般处理程序获取条形码图片,需要的可以下载学习。

    pb生成条形码

    这段代码会生成一个Code 128条形码,其中包含字符串"1234567890",并将条形码保存为PNG图像文件"barcode.png"。这个过程涉及到了Pike的类和对象,以及文件操作。 在实际应用中,你可能还需要考虑其他因素,如条形码...

    易语言纯算法生成商品条形码

    "SanYe"可能是易语言的一个用户或团队,他们可能提供了关于如何在易语言中实现商品条形码生成的示例代码或教程。 总的来说,使用易语言生成商品条形码涉及对条形码编码规则的理解,以及熟练运用易语言的字符串处理...

    C#条形码生成(源代码)

    C# 条形码生成(源代码) 作为一名 IT 行业大师,我将为您详细解释 C# 实现批量生成条形码的知识点。 标题解释 "C# 条形码生成(源代码)" 这个标题表明该项目的主要功能是使用 C# 语言生成条形码,且提供了源...

    生成条形码的程序(两种实现方式)

    在代码中,你需要实例化条形码类,设置条形码类型和值,然后生成图像并显示。 VB.NET的实现方式类似,但语法有所差异。例如,VB.NET的窗体和控件操作与C#相比,主要在于语法结构的差异。VB.NET的代码会使用“With”...

    html+js生成条形码和二维码 纯静态同时生成条形码和二维码

    在IT行业中,生成条形码和二维码是常见的数据可视化需求,尤其在物流、零售和信息交换等领域。这个项目,"html+js生成条形码和二维码 纯静态同时生成条形码和二维码",提供了纯JavaScript解决方案,使得在没有服务器...

    C#开发生成条形码

    在IT行业中,生成条形码是一项常见的需求,特别是在库存管理、物流跟踪以及商品标识等领域。C#作为一种强大的.NET编程语言,结合Visual Studio(VS)的Windows Forms(WinForm)环境,为开发人员提供了便捷的工具来...

    Asp生成条形码代码

    在ASP(Active Server Pages)这种服务器端脚本语言中,我们可以利用特定的库或者自定义代码来生成条形码。下面将详细探讨如何在ASP中生成条形码。 首先,我们需要了解在ASP中生成条形码的基本步骤: 1. **选择库...

    在web生成条形码生成条形码生成条形码

    在Web环境中生成条形码是一项常见的需求,尤其在电商、物流、库存管理等领域。条形码作为一种自动识别技术,能够快速、准确地读取产品信息,极大地提高了工作效率。本篇文章将详细探讨如何在Web上生成条形码,以及...

    C++ 条码生成源代码

    在IT领域,条形码是一种广泛应用于商品标识、库存管理、物流追踪的技术。"C++ 条码生成源代码"的资源提供了一种利用C++编程语言实现条码生成的功能,支持128码、39码、93码、EAN和UPC以及2of5等常见的条码类型。这些...

    自动生成条形码并且打印

    软件能够根据用户输入的数据(如产品代码、序列号等)自动计算并生成对应的条形码图形。这通常涉及到条形码编码算法,如Code 39、EAN-13、QR Code等,每种都有其特定的应用场景和编码规则。 “保存方案”功能意味着...

    生成条形码的java源代码

    本文将详细介绍如何使用Java源代码生成各种规格的条形码,并提供一个名为`testBarCode2`的压缩包文件,其中包含了实现这一功能的源代码。 条形码是一种图形化数据表示形式,它通过不同宽度的黑白条纹来编码特定的...

    PB条形码源码barcode无需注册无需安装任何控件

    通过这些源代码,开发者可以学习如何在PB中定义条形码的格式、生成条形码图像并将其集成到用户界面中。 总结来说,这个PB条形码源码提供了一个在PowerBuilder环境中无须额外工具或组件即可生成Code39和Code128条形...

    基于UniApp的二维码条形码生成.zip

    【基于UniApp的二维码条形码生成】 在移动应用开发领域,二维码和条形码的生成与识别已经成为不可或缺的功能之一。UniApp是一个跨平台的前端框架,它允许开发者使用一套代码编写多端应用,包括iOS、Android、H5以及...

    离线生成EAN-13条形码代码(69固定开头,Ver.1)

    Java编程语言被用于离线生成这种特定的条形码,这意味着我们无需依赖网络服务,只需运行相应的Java代码即可生成条形码图像。在Eclipse集成开发环境中,我们可以创建一个Java项目,然后编写处理EAN-13条形码生成的类...

    PB万能生成条码打印

    【PB万能生成条码打印】是一个专门针对条形码生成和打印的程序开发技术,主要使用PowerBuilder(PB)这一编程工具实现。在IT行业中,条形码是一种广泛应用于商品标识、库存管理、物流追踪等领域的数据表示方式。Code...

    VB.net 生成条形码code128条码.rar

    程序中为生成条形码,创建了一些函数,比如显示可见条码文字 如果小于40 不显示文字、获取条形码宽和放大系数、获得条码图形、根据编号获得条纹、获取目标对应的数据、偶数检测判断、获取128图形等,在VB.NET生成...

Global site tag (gtag.js) - Google Analytics