Почему библиотека Barbecue Barcode генерирует изображение, отличное от других генераторов штрих-кода?

У меня проблема с библиотекой штрих-кода для барбекю. Я пытаюсь создать простой штрих-код code128, но изображение, которое я получаю, отличается от того, что я получаю от других онлайн (например, http://barcode-generator.org/) и настольных (то есть Zing) генераторов штрихкодов.

Вот код ColdFusion, который я использую:

<cfscript>
    LOCAL.BarcodeData = "10047846";
    LOCAL.BarcodeFactory = CreateObject("java", "net.sourceforge.barbecue.BarcodeFactory");
    LOCAL.Barcode = LOCAL.BarCodeFactory.createCode128(LOCAL.BarcodeData);
    LOCAL.BarcodeImageHandler = CreateObject("java", "net.sourceforge.barbecue.BarcodeImageHandler");
    LOCAL.BarcodeBufferedImage = LOCAL.BarcodeImageHandler.getImage(LOCAL.Barcode);
    LOCAL.BarcodeImage = ImageNew(LOCAL.BarcodeBufferedImage);
    LOCAL.BarcodeImagePath =
        "C:\temp_\barcode-" & LOCAL.BarcodeData & ".jpg";
    ImageWrite(LOCAL.BarcodeImage, LOCAL.BarcodeImagePath, 1);
</cfscript>
<cfimage action="writeToBrowser" source="#LOCAL.BarcodeImagePath#" />

Это выводит следующее изображение:

Штрих-код, генерируемый барбекю 10047846

Но вот что я получаю от настольной программы Zing:

И вот что я получаю от barcode-generator.org:

Теперь у меня нет проблем с размером, масштабированием и т. Д. Но вы можете легко сказать, что изображение, сгенерированное барбекю, сильно отличается - просто посмотрите на первые несколько тактов.

Почему это происходит? Это ошибка с барбекю или я что-то не так делаю?

3 ответа

Не уверен, что это "ответ" как таковой, но, когда я изменил код для использования формата Code128C, изображение получилось, как и ожидалось. Мне просто нужно было изменить размер, чтобы получить нужный размер:

Код:

<cfscript>
    LOCAL.BarcodeData = "10047846";
    LOCAL.BarcodeFactory = CreateObject("java", "net.sourceforge.barbecue.BarcodeFactory");
    LOCAL.Barcode = LOCAL.BarCodeFactory.createCode128C(LOCAL.BarcodeData);
    LOCAL.Barcode.setDrawingText(false);
    LOCAL.Barcode.setDrawingQuietSection(false);
    LOCAL.Barcode.setBarWidth(1);
    LOCAL.Barcode.setBarHeight(30);
    LOCAL.BarcodeImageHandler = CreateObject("java", "net.sourceforge.barbecue.BarcodeImageHandler");
    LOCAL.BarcodeBufferedImage = LOCAL.BarcodeImageHandler.getImage(LOCAL.Barcode);
    LOCAL.BarcodeImage = ImageNew(LOCAL.BarcodeBufferedImage);
    LOCAL.BarcodeImagePath =
        "C:\temp_\barcode-" & LOCAL.BarcodeData & ".jpg";
    ImageWrite(LOCAL.BarcodeImage, LOCAL.BarcodeImagePath, 1);
</cfscript>
<cfimage action="writeToBrowser" source="#LOCAL.BarcodeImagePath#" />

Похоже, ширина полосы вашего изображения больше, чем в примерах. Установите ширину полосы в 1 px. добавляя LOCAL.Barcode.setBarWidth(1);прежде чем генерировать штрих-код.

<cfscript>
  LOCAL.BarcodeData = "10047846";
  LOCAL.BarcodeFactory = CreateObject("java", "net.sourceforge.barbecue.BarcodeFactory");
  LOCAL.Barcode = LOCAL.BarCodeFactory.createCode128(LOCAL.BarcodeData);
  LOCAL.Barcode.setBarWidth(1); // decrease the width of the bars
  LOCAL.Barcode.setBarHeight(50); // if you want a taller barcode like the examples
  LOCAL.BarcodeImageHandler = CreateObject("java", "net.sourceforge.barbecue.BarcodeImageHandler");
  LOCAL.BarcodeBufferedImage = LOCAL.BarcodeImageHandler.getImage(LOCAL.Barcode);
  LOCAL.BarcodeImage = ImageNew(LOCAL.BarcodeBufferedImage);
  LOCAL.BarcodeImagePath = gettempDirectory()& "\barcode-" & LOCAL.BarcodeData & ".jpg";
ImageWrite(LOCAL.BarcodeImage, LOCAL.BarcodeImagePath, 1);
</cfscript>

Я отсканировал его с помощью сканера штрих-кода, и все три изображения прочитали одну и ту же строку "10047846". Для штрих-кодов я использую CFBarbecue ( http://cfbarbecue.riaforge.org/), упаковку ColdFusion для барбекю. Используя ту же строку, ниже приведено изображение, которое я смог создать с помощью CFBarbecue.

Другие вопросы по тегам