2014-01-25 3 views
2

나는 Windows Phone 8에서 QR 코드를 수행하는 방법에 관한 훌륭한 자습서를 찾기 위해 얼마 동안 노력해 왔습니다. 불행히도 그 중 모두 (적어도 발견 한 사람은 큰로드였습니다.), WP7 용이었고 작동하지 않았습니다.Windows Phone에서의 QR 스캔 8

그들 중 일부는 PhotoLuminance 개체가 필요하며 ZXing.net 라이브러리에서는 사용할 수 없습니다.

내 가장 큰 문제는 카메라에서 ImageStream을 검색하는 방법을 알지 못한다는 것입니다. 이동 중에도 계속해서 스캔하면됩니다.

저는 카메라 매스크를 시작하지 않고도 유창한 뭔가가 필요합니다. :).

지금은 VideoBrush 구성 요소를 사용하여 이미지를 사각형으로 캡처하므로 카메라에서 데이터를 검색하는 중입니다. 나는 최후의 수단으로이 사용하고

camera = new PhotoCamera(CameraType.Primary); 
viewfinderBrush.SetSource(camera); 

, 나는 정말 누군가가 내가 ZXing.Net 라이브러리와 함께 아래 코드를 사용해보십시오이

답변

0

에 접근하는 방법에 거기에 샘플 코드 또는 아이디어를 가지고 희망 .

XAML

<Grid x:Name="grdCamera"> 
    <Rectangle x:Name="_previewRect" 
      Margin="0" 
      Height="800" 
      Width="600" 
      HorizontalAlignment="Center" 
      VerticalAlignment="Center"> 
     <Rectangle.Fill> 
      <VideoBrush x:Name="_previewVideo"> 
       <VideoBrush.RelativeTransform> 
        <CompositeTransform 
        x:Name="_previewTransform" CenterX=".5" CenterY=".5" /> 
       </VideoBrush.RelativeTransform> 
      </VideoBrush> 
     </Rectangle.Fill> 
    </Rectangle> 
</Grid> 

C#

private readonly DispatcherTimer _timer; 
private PhotoCameraLuminanceSource _luminance; 
private QRCodeReader _reader; 
private PhotoCamera _photoCamera; 

//Constructor 
public ScanPage() 
{ 
    InitializeComponent(); 

    _timer = new DispatcherTimer(); 
    _timer.Interval = TimeSpan.FromMilliseconds(250); 
    _timer.Tick += (o, arg) => ScanPreviewBuffer(); 
} 

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    _photoCamera = new PhotoCamera(); 
    _photoCamera.Initialized += OnPhotoCameraInitialized; 
    _previewVideo.SetSource(_photoCamera); 

    CameraButtons.ShutterKeyHalfPressed += (o, arg) => _photoCamera.Focus(); 

    base.OnNavigatedTo(e); 
} 

private void OnPhotoCameraInitialized(object sender, CameraOperationCompletedEventArgs e) 
{ 
    int width = Convert.ToInt32(_photoCamera.PreviewResolution.Width); 
    int height = Convert.ToInt32(_photoCamera.PreviewResolution.Height); 

    _luminance = new PhotoCameraLuminanceSource(width, height); 
    _reader = new QRCodeReader(); 

    Dispatcher.BeginInvoke(() => 
    { 
     _previewTransform.Rotation = _photoCamera.Orientation; 
     _timer.Start(); 
    }); 
} 

private void ScanPreviewBuffer() 
{ 
    try 
    { 
     _photoCamera.GetPreviewBufferY(_luminance.PreviewBufferY); 
     var binarizer = new HybridBinarizer(_luminance); 
     var binBitmap = new BinaryBitmap(binarizer); 
     var result = _reader.decode(binBitmap); 
     Dispatcher.BeginInvoke(() => MessageBox.Show(result.Text)); 
    } 
    catch 
    { 
    } 
} 
+0

페이지를 참조하십시오 http://jonas.follesoe.no/2011/07/22/qr-code-scanning-on-windows-phone- 75-zxlib 사용/PhotoCameraLuminanceSource의 정의 –

관련 문제