IRONSOFTWAREHOME

How to Read Barcodes From System.Drawing in C#

Hairil Hasyimi Bin Omar
Hairil Hasyimi Bin Omar
Updated: 2026년 6월 4일

IronBarcode는 모든 운영 체제에서 System.Drawing 객체에서 바코드를 읽을 수 있으며, AnyBitmap로 자동 변환하여 Windows 전용 System.Drawing 지원 제한을 해결합니다.

소개

System.Drawing 객체는 이미지 처리 작업에 .NET에서 널리 사용됩니다. 그러나 Microsoft는 MacOS 및 Linux에서 System.Drawing 지원을 중단했으며, 이제 Windows만 지원합니다. 이 변경은 바코드 작업이 보통 그래픽, 이미지, 폰트와 관련되어 있기 때문에 비-Windows 운영 체제에서 IronBarcode를 사용하는 개발자에게 문제를 발생시켰습니다.

이 문제를 해결하기 위해 IronDrawing을 소개했습니다. Iron Software가 만든 이 무료오픈 소스 라이브러리는 크로스 플랫폼 지원을 간소화하고 원활한 경험을 제공합니다. NuGet에서 IronBarcode를 설치할 때 IronDrawing가 프로젝트에 자동으로 포함됩니다.

바코드 읽기에 익숙하지 않은 개발자는 기본 개념 및 기본 사용 패턴을 다루는 포괄적인 바코드 읽기 튜토리얼을 참조하세요. 다양한 이미지 형식을 사용하는 경우, 이미지에서 바코드 읽기에 대한 우리의 가이드가 추가적인 문맥과 예제를 제공합니다.

Quickstart: 한 줄로 AnyBitmap를 사용하여 바코드를 읽기

이 코드 스니펫은 IronBarcode가 System.Drawing.Bitmap를 생성하고 IronDrawingAnyBitmap로 암시적으로 캐스팅하는 방법을 보여줍니다. 단 한 줄만으로도 다양한 운영 체제에서 빠른 결과를 얻을 수 있습니다.

  1. 1Install IronBarcode with NuGet Package Manager

    PM > Install-Package BarCode

  2. 2다음 코드 조각을 복사하여 실행하세요.

    var results = IronBarCode.BarcodeReader.Read((AnyBitmap)(new System.Drawing.Bitmap("yourImage.png")));
    C#
  3. 3실제 운영 환경에서 테스트할 수 있도록 배포하세요.

    무료 체험판으로 오늘 프로젝트에서 IronBarcode 사용 시작하기
    arrow pointer

System.Drawing 객체를 AnyBitmap로 캐스팅하는 방법은?

System.Drawing에서 바코드를 읽으려면 객체를 AnyBitmap로 캐스팅해야 합니다. IronDrawing는 사용하기 쉽도록 설계되었으며, System.Drawing에서 IronSoftware.Drawing라는 AnyBitmap 이미지 객체로의 암시적 캐스팅을 지원합니다.

System.Drawing 객체를 넘어, 우리는 다른 유형으로의 캐스팅을 지원합니다:

  • System.Drawing.Bitmap
  • System.Drawing.Image
  • SkiaSharp.SKBitmap
  • SkiaSharp.SKImage
  • SixLabors.ImageSharp

위 객체를 AnyBitmap로 캐스팅하는 코드 예제를 참조하세요. 다음은 System.Drawing 객체에서 IronSoftware.Drawing.AnyBitmap로 바코드 이미지를 캐스팅하는 것을 보여줍니다:

어떤 System.Drawing 유형을 캐스팅할 수 있습니까?

using IronSoftware.Drawing;
using System.Collections.Generic;

List<AnyBitmap> barcodes = new List<AnyBitmap>();

// Instantiate System.Drawing.Bitmap
System.Drawing.Bitmap bitmapFromBitmap = new System.Drawing.Bitmap("test1.jpg");

// Cast from System.Drawing.Bitmap to AnyBitmap
AnyBitmap barcode1 = bitmapFromBitmap;

barcodes.Add(barcode1);

// Instantiate System.Drawing.Bitmap
System.Drawing.Image bitmapFromFile = System.Drawing.Image.FromFile("test2.png");

// Cast from System.Drawing.Image to AnyBitmap
AnyBitmap barcode2 = bitmapFromFile;

barcodes.Add(barcode2);

이 코드는 System.Drawing 객체와 IronBarcode 간의 IronDrawing을 통한 매끄러운 통합을 보여줍니다. 지원되는 바코드 형식 가이드에 자세히 설명된 다양한 바코드 형식 전반에 걸쳐 호환성이 확장되며, 여기에는 QR 코드, 코드 128, 코드 39 및 기타 여러 가지가 포함됩니다.

암시적 캐스팅이 왜 작동하나요?

위의 코드에서 우리는 두 개의 바코드 이미지를 System.Drawing.BitmapSystem.Drawing.Image로 로드했습니다. 그런 다음 AnyBitmap 객체에 할당하여 그들을 AnyBitmap 객체로 암시적으로 캐스트하고, 이 객체들을 AnyBitmap 리스트에 추가했습니다.

IronDrawing의 암시적 캐스팅 메커니즘은 연산자 오버로딩을 사용하여 System.Drawing 유형과 AnyBitmap 간의 투명한 변환을 제공합니다. 이 디자인 패턴은 개발자가 기존 코드를 유지하면서 플랫폼 간의 호환성을 확보할 수 있게 합니다. 변환은 해상도, 색상 깊이, 픽셀 데이터를 포함한 모든 이미지 속성을 보존하여 품질 손실이 없도록 보장합니다.

명시적 캐스팅을 사용할 때와 암시적 캐스팅을 사용할 때는 언제인가요?

암시적 캐스팅은 편리함을 제공하지만, 일부 상황에서는 명시적 캐스팅이 선호될 수 있습니다:

// Implicit casting - clean and simple for straightforward conversions
System.Drawing.Bitmap systemBitmap = new System.Drawing.Bitmap("barcode.png");
AnyBitmap anyBitmap = systemBitmap; // Implicit cast

// Explicit casting - useful when type clarity is important
System.Drawing.Image systemImage = System.Drawing.Image.FromFile("qrcode.jpg");
AnyBitmap explicitBitmap = (AnyBitmap)systemImage; // Explicit cast

// When working with nullable types or conditional logic
System.Drawing.Bitmap? nullableBitmap = GetBitmapFromSource();
if (nullableBitmap != null)
{
    AnyBitmap result = (AnyBitmap)nullableBitmap; // Explicit cast for clarity
    // Process the barcode
}

일반적인 캐스팅 오류는 무엇인가요?

System.Drawing에서 AnyBitmap로 변환할 때, 개발자는 다음과 같은 문제에 직면할 수 있습니다:

  1. 널 참조 예외: 캐스팅 전에 System.Drawing 객체가 널이 아님을 확인하십시오
  2. 지원되지 않는 형식 예외: 일부 희귀한 이미지 형식은 사전 변환이 필요합니다
  3. 메모리 문제: 큰 이미지는 적절한 폐기 패턴을 사용해야 합니다

캐스팅 문제를 해결하려면, 바코드 인식 중 발생하는 일반적인 문제에 대한 해결책을 제공하는 문제 해결 가이드를 참조하세요.

AnyBitmap 객체에서 바코드를 어떻게 읽나요?

IronBarcode는 추가 설정 없이 모든 메서드에서 IronSoftware.Drawing.AnyBitmap 객체를 수용합니다. 이것은 비 Windows 운영 체제에서 System.Drawing 객체를 사용할 때 개발을 간소화합니다. 다음 코드는 이를 시연합니다:

어떤 메서드가 AnyBitmap 매개변수를 수용합니까?

using IronBarCode;
using IronSoftware.Drawing;
using System;
using System.Collections.Generic;

// Create a list of image file paths to read barcodes from
List<string> barcodeFiles = new List<string>
{
    "test1.jpg",
    "test2.png"
};

foreach (var barcodeFile in barcodeFiles)
{
    // Read the barcode from file path
    var results = BarcodeReader.Read(barcodeFile);
    foreach (var result in results)
    {
        // Output the detected barcode value
        Console.WriteLine(result.Value);
    }
}

기본 Read 메서드 외에도, IronBarcode는 AnyBitmap 매개변수를 수용하는 여러 메서드를 제공합니다. 고급 시나리오를 위해, 다중 바코드 읽기 가이드를 참조하여 단일 이미지에서 여러 바코드를 효율적으로 처리하는 방법을 보여줍니다:

// Advanced barcode reading with options
var readerOptions = new BarcodeReaderOptions
{
    // Specify barcode types to search for
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,
    // Set confidence threshold
    ConfidenceThreshold = 0.95
};

// Read with specific options
var advancedResults = BarcodeReader.Read(anyBitmap, readerOptions);
C#

다중 바코드 결과를 어떻게 처리하나요?

위 코드는 이전 예제를 확장합니다. AnyBitmap 리스트를 채운 후 우리는 그것을 반복하여 각 AnyBitmap 객체에서 Read 메서드를 호출하였으며, **IronBarCode.BarcodeResults**를 반환하였습니다. 그런 다음 결과를 반복하여 콘솔에 바코드 값을 출력했습니다.

다중 바코드를 처리할 때는 병렬 처리를 활용하여 성능을 향상하세요:

// Parallel processing for multiple barcode images
var barcodeFiles = Directory.GetFiles("barcodes/", "*.png");
var allResults = new ConcurrentBag<BarcodeResult>();

Parallel.ForEach(barcodeFiles, file =>
{
    var bitmap = new System.Drawing.Bitmap(file);
    var anyBitmap = (AnyBitmap)bitmap;
    var results = BarcodeReader.Read(anyBitmap);
    
    foreach (var result in results)
    {
        allResults.Add(result);
    }
    
    bitmap.Dispose(); // Clean up resources
});

// Process all results
foreach (var result in allResults)
{
    Console.WriteLine($"Found {result.BarcodeType}: {result.Value}");
}

어떤 다른 IronDrawing 기능을 사용할 수 있나요?

IronSoftware.Drawing 기능은 이미지 캐스팅을 넘어서 확장됩니다. 이미지 처리 측면, 특히 바코드 및 QR 코드 스타일에 유용한 색상폰트를 처리합니다. QR 코드에 로고를 추가하고 맞춤화하기 위하여 IronDrawing를 사용하는 방법을 탐색하십시오.

IronDrawing는 바코드 처리에 맞는 강력한 이미지 조작 기능을 제공합니다:

// Using IronDrawing for image preprocessing
using IronSoftware.Drawing;

// Load and preprocess an image before barcode reading
AnyBitmap preprocessedImage = AnyBitmap.FromFile("noisy-barcode.jpg");

// Apply image filters to improve barcode readability
preprocessedImage = preprocessedImage.ToGrayScale();
preprocessedImage = preprocessedImage.Contrast(1.5); // Increase contrast
preprocessedImage = preprocessedImage.Sharpen(); // Sharpen image

// Read the preprocessed barcode
var improvedResults = BarcodeReader.Read(preprocessedImage);

특정 이미지 수정을 요구하는 시나리오의 경우, 이미지 수정 가이드는 필터를 사용하여 바코드 읽기 성능을 향상시키는 방법을 설명합니다.

IronDrawingSystem.Drawing보다 선택해야 할까요?

IronDrawingSystem.Drawing보다 매력적인 이점을 제공합니다:

  1. 크로스 플랫폼 지원: .NET Core/5+의 Windows 전용과 달리 Windows, Linux, macOS에서 원활하게 작동
  2. 현대적 아키텍처: 성능과 메모리 관리 향상을 위한 SkiaSharpImageSharp 기반
  3. 간소화된 API: 익숙한 System.Drawing 유사 인터페이스를 유지하며 현대적 편의를 추가
  4. 활발한 개발: 유지 관리 모드의 System.Drawing와 달리 정기적인 업데이트와 개선
  5. 더 나은 통합: Iron Software 제품과의 최적 성능을 위해 특별히 설계되었습니다

배포 고려 사항, 특히 클라우드 환경에 대해서는, Azure에 배포하기AWS에 배포하기에 관한 가이드를 참조하십시오. 여기에는 IronDrawing를 사용한 크로스 플랫폼 호환성에 대한 특정한 언급이 포함되어 있습니다.

데스크톱 애플리케이션, 웹 서비스, 클라우드 네이티브 솔루션을 구축하든, IronDrawing는 모든 플랫폼에서 바코드 처리 코드가 이식 가능하고 효율적으로 유지되도록 보장하여, 현대 .NET 개발에 이상적인 선택입니다.

자주 묻는 질문

Windows 이외의 플랫폼에서 System.Drawing 객체의 바코드를 읽으려면 어떻게 해야 합니까?

IronBarcode는 System.Drawing 객체에서 바코드를 자동으로 읽어와 IronDrawing을 통해 AnyBitmap 형식으로 변환함으로써 플랫폼에 관계없이 바코드를 읽을 수 있도록 지원합니다. 이를 통해 System.Drawing이 Windows에서만 사용 가능하다는 Microsoft의 제약을 해결하여 macOS 및 Linux 시스템에서도 바코드를 원활하게 읽을 수 있습니다.

IronDrawing이란 무엇이며 바코드 판독에 포함되는 이유는 무엇입니까?

IronDrawing은 Iron Software에서 개발한 무료 오픈 소스 라이브러리로, 다양한 플랫폼에서 그래픽 작업을 지원합니다. NuGet에서 IronBarcode를 설치하면 자동으로 포함되며, System.Drawing 객체의 바코드를 호환되는 AnyBitmap 형식으로 변환하여 모든 운영 체제에서 바코드를 읽을 수 있도록 해줍니다.

System.Drawing.Bitmap에서 바코드를 읽을 수 있도록 변환하려면 어떻게 해야 하나요?

System.Drawing.Bitmap에서 AnyBitmap으로 간단히 형변환하여 바코드를 읽을 수 있습니다. 예: `var results = BarcodeReader.Read((AnyBitmap)(new System.Drawing.Bitmap("yourImage.png")));`. IronBarcode는 IronDrawing의 암시적 형변환 기능을 통해 변환을 자동으로 처리합니다.

Linux와 MacOS에서 System.Drawing을 사용하여 바코드를 읽을 수 있습니까?

예, IronBarcode는 IronDrawing을 통해 Linux 및 MacOS에서 System.Drawing 객체의 바코드를 읽을 수 있도록 지원합니다. IronDrawing은 System.Drawing 객체를 자동으로 크로스 플랫폼 AnyBitmap 형식으로 변환합니다. 이를 통해 Microsoft의 Windows 전용 System.Drawing 지원 제한을 극복할 수 있습니다.

바코드 판독에 사용할 수 있는 System.Drawing 객체의 유형은 무엇입니까?

IronBarcode는 System.Drawing.Bitmap 및 기타 이미지 유형을 포함한 다양한 System.Drawing 객체에서 바코드를 읽는 기능을 지원합니다. 이러한 객체는 IronDrawing의 암시적 형변환 기능을 통해 자동으로 AnyBitmap으로 변환되므로 플랫폼에 관계없이 바코드 스캔 기능을 사용할 수 있습니다.

System.Drawing에서 바코드를 읽는 간단한 한 줄짜리 코드가 있을까요?

네, IronBarcode는 한 줄짜리 해결책을 제공합니다. `var results = BarcodeReader.Read((AnyBitmap)(new System.Drawing.Bitmap("yourImage.png")));` 이 한 줄 코드는 System.Drawing.Bitmap 객체를 생성하고, IronDrawing을 통해 AnyBitmap으로 형변환한 다음, 이미지에 있는 모든 바코드를 읽어옵니다.

Is IronDrawing included when I install IronBarcode?

Yes, when you install IronBarcode from NuGet, IronDrawing is automatically included, ensuring seamless integration for cross-platform barcode scanning.

How do I handle multiple barcodes in a single image using IronBarcode?

Use the BarcodeReader.Read method with AnyBitmap, and leverage parallel processing to efficiently handle and read multiple barcodes in a single image.

What image processing features does IronDrawing provide?

IronDrawing can handle image processing tasks such as color adjustment and font handling, which are useful when styling barcodes and QR codes.

How does implicit casting help in cross-platform development?

Implicit casting in IronDrawing allows developers to convert System.Drawing objects to AnyBitmap without changing existing code, facilitating cross-platform compatibility and development for Linux, macOS, and Windows.

시작할 준비 되셨나요?

Nuget Downloads 2,422,100버전:2026.9방금 출시

무료로 받기

30일 체험 키를 즉시 받으세요.

bullet_checked신용카드나 계정 생성은 필요하지 않습니다.
bullet_test워터마크 없이
프로덕션에서 테스트
bullet_calendar30일 완전한
기능의 제품
bullet_support체험 기간 동안
24/5 기술 지원
지금 바로 30일 무료 체험판 키를 받으세요.
신용카드나 계정 생성은 필요하지 않습니다.
PDF용 C# NuGet 라이브러리
NuGet을 사용하여 설치하세요

버전: 2026.9

PM > Install-Package BarCode
nuget.org/packages/BarCode/
  1. 솔루션 탐색기에서 참조를 마우스 오른쪽 버튼으로 클릭하고 NuGet 패키지 관리를 선택합니다.
  2. 찾아보기를 선택하고 "IronBarCode"를 검색하세요.
  3. 패키지를 선택하고 설치하세요
C# PDF DLL
DLL 다운로드

버전: 2026.9

  1. IronBarCode 파일을 다운로드하고 솔루션 디렉터리 내의 ~/Libs와 같은 위치에 압축을 해제하세요.
  2. Visual Studio 솔루션 탐색기에서 참조를 마우스 오른쪽 버튼으로 클릭합니다. 찾아보기를 선택하고 "IronBarCode.dll"을 선택합니다.

라이선스 가격은 749달러 부터 시작합니다.

Key in blue circle

무료 30일 체험 키를 즉시 받으세요.

Your trial license will be sent to your email address

제한 없음. 100% 무제한 이용. 신용카드 불필요.

bullet_checked신용카드나 계정 생성은 필요하지 않습니다.제한 없음. 100% 무제한 이용. 신용카드 불필요.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
무료 라이브 데모를 예약하세요
Booking Badge

전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.

Iron Software의 고객 로고
부담 없는 무료 상담을 받아보세요
아래 양식을 작성하시거나 sales@ironsoftware.com으로 이메일을 보내주세요.
고객님의 정보는 항상 비밀로 유지됩니다.
전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.
Iron Software의 고객 로고
지금 바로 30일 무료 체험판 키를 받으세요.
신용카드나 계정 생성은 필요하지 않습니다.