2015-02-04 4 views
3

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

Вот код 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#" /> 

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

Barbecue-generated Barcode 10047846

Но вот то, что я получаю от программы Zing рабочего стола:

enter image description here

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

enter image description here

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

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

+0

Почему это помечается ColdFusion? –

+0

@ScottStroz Потому что я использую ColdFusion для вызова библиотеки и создания изображений. –

+2

'211214' шаблон, начинающийся с барбекю-кода, является START для CODE128B. Остальные два, «211232», являются START для CODE128C. Оба действительны. – charlesbridge

ответ

0

Похоже, ширина бара вашего изображения больше, чем примеры. Установите ширину полосы 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> 
0

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

enter image description here

+0

Я тоже использовал CFBarbecue, но я хотел проверить, что это не проблема с CFC, поэтому я написал это простое приложение, чтобы попробовать. –

+0

, что приятно знать, что это сработало. Я просто стараюсь угодить клиенту, для которого штрих-код, который я создаю, НЕ работает. –

1

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

enter image description here

Код:

<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#" /> 

 Смежные вопросы

  • Нет связанных вопросов^_^