Опитвам се да сканирам изображение с помощта на ZBar и работя от този примерен код: http://blog.freehand.com.ua/2013/03/zbar-reading-bar-codes-in-delphi.html
Това е кодът, който имам в момента:
procedure TForm1.Button1Click(Sender: TObject);
var zimage : zbar_image_t;
weirdVarArea : SIZE_T;
weirdVarBlob : PByte;
sym: zbar_symbol_t;
begin
zimage := zbar_image_create;
zbar_image_set_format(zimage, 'Y800');
zbar_image_set_size(zimage, Image1.Picture.Width, Image1.Picture.Height);
weirdVarArea := Image1.Picture.Width * Image1.Picture.Height;
weirdVarBlob := GetMemory(weirdVarArea);
zbar_image_set_data(zimage, weirdVarBlob, weirdVarArea, nil);
zbar_process_image(processor, zimage);
// sym := zbar_image_first_symbol(zimage);
// ShowMessage(zbar_symbol_get_data(sym));
end;
end.
Във формуляра има един бутон с име „Button1“, както и компонент на изображение с име „Image1“ със зареден в него qr код.
Когато стартирам този код, получавам грешката: Access violation at address 77E57543 in module 'ntdll.dll'. Write of address 000000A4.
Редът, причиняващ проблема, е zbar_process_image(processor, zimage);
Не съм сигурен как да продължа.
Благодаря за отговора, Кобус
processor
и каква е стойността му в реда, който сте маркирали? И проверихте ли както параметрите, така и стойностите, които се предават наzbar_image_set_data
в реда по-горе (който вероятно е редът, който всъщност предизвиква изключението)? - person Ken White   schedule 12.05.2015zbar_process_image()
. Така че може би това е причината да се срива. - person Remy Lebeau   schedule 12.05.2015TImage
не работи с Y800 кодирани пиксели. Оригиналният код получаваше пикселите на изображението от файл, така че вероятно беше Y800 кодиран файл. Така че трябва да използвате правилния формат на изображението за пикселите, които ще подавате в процесора. - person Remy Lebeau   schedule 12.05.2015