반응형
✅ 1. NuGet 패키지 설치
Visual Studio에서 패키지 관리자 콘솔을 열고 다음 명령어 실행:
Install-Package QRCoder
✅ 2. 기본 QR 코드 생성 코드
using QRCoder;
using System.Drawing;
using System.Windows.Forms; // WinForms에서 PictureBox에 이미지 표시할 때
public class QRCodeGeneratorExample
{
public static Bitmap GenerateQRCode(string text)
{
QRCodeGenerator qrGenerator = new QRCodeGenerator();
QRCodeData qrCodeData = qrGenerator.CreateQrCode(text, QRCodeGenerator.ECCLevel.Q);
QRCode qrCode = new QRCode(qrCodeData);
Bitmap qrCodeImage = qrCode.GetGraphic(20); // 20은 픽셀 단위의 스케일
return qrCodeImage;
}
}
사용 예시:
string input = "https://www.example.com";
Bitmap qrImage = QRCodeGeneratorExample.GenerateQRCode(input);
// PictureBox에 표시하려면:
pictureBox1.Image = qrImage;
✅ 3. PNG/JPG로 저장하기
qrImage.Save("qrcode.png", System.Drawing.Imaging.ImageFormat.Png);
✅ 4. WPF에서 사용하려면
WPF는 BitmapImage를 사용하므로 변환이 필요합니다.
public static BitmapImage ConvertBitmapToBitmapImage(Bitmap bitmap)
{
using (MemoryStream memory = new MemoryStream())
{
bitmap.Save(memory, System.Drawing.Imaging.ImageFormat.Png);
memory.Position = 0;
BitmapImage bitmapImage = new BitmapImage();
bitmapImage.BeginInit();
bitmapImage.StreamSource = memory;
bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
bitmapImage.EndInit();
return bitmapImage;
}
}
✅ 5. 로고 포함 QR 코드 생성 예제
using QRCoder;
using System.Drawing;
public class QRWithLogo
{
public static Bitmap GenerateQRCodeWithLogo(string qrText, Bitmap logo)
{
// 1. QR 코드 생성
QRCodeGenerator qrGenerator = new QRCodeGenerator();
QRCodeData qrCodeData = qrGenerator.CreateQrCode(qrText, QRCodeGenerator.ECCLevel.Q); // ECCLevel을 높게 설정해야 오류 복원 가능
QRCode qrCode = new QRCode(qrCodeData);
Bitmap qrCodeImage = qrCode.GetGraphic(20, Color.Black, Color.White, true); // 20은 scale
// 2. 로고 크기 조정 (QR의 15~20% 정도 권장)
int logoSize = qrCodeImage.Width / 5;
Bitmap resizedLogo = new Bitmap(logo, new Size(logoSize, logoSize));
// 3. QR 중앙에 로고 삽입
Graphics graphics = Graphics.FromImage(qrCodeImage);
int x = (qrCodeImage.Width - resizedLogo.Width) / 2;
int y = (qrCodeImage.Height - resizedLogo.Height) / 2;
graphics.DrawImage(resizedLogo, x, y, resizedLogo.Width, resizedLogo.Height);
graphics.Save();
return qrCodeImage;
}
}
✅ 6. 사용 예시
string text = "https://www.example.com";
Bitmap logo = (Bitmap)Image.FromFile("logo.png");
Bitmap qrWithLogo = QRWithLogo.GenerateQRCodeWithLogo(text, logo);
qrWithLogo.Save("qrcode_with_logo.png");
✅ 참고사항
- 오류 복원 수준(ECCLevel.Q 이상): QR 코드의 중앙에 이미지가 들어가면 일부 영역이 가려지므로 오류 복원 수준을 높게 (Q, H) 설정해야 QR이 정상 인식됩니다.
- 로고 비율: 일반적으로 전체 QR 이미지의 15~20% 이하 크기로 삽입해야 스캔 오류를 방지할 수 있습니다.
- 투명 배경 PNG 사용 가능: .png 로고는 투명 배경을 유지한 채 삽입됩니다.
필요하시다면 WPF에서 사용하기 위한 BitmapImage 변환 코드나, 로고에 테두리/배경을 추가하는 방법도 도와드릴 수 있어요. 추가 요청 있으시면 말씀해주세요!
✅ 추가 옵션들 (색상 변경 등)
qrCode.GetGraphic(
20, // scale
Color.Black, // foreground
Color.White, // background
drawQuietZones: true // 주변 여백 여부
);
✅ 기타 기능들
QRCoder는 다음 기능도 지원합니다:
- WiFi QR 생성 (WiFiGenerator)
- 이메일, 연락처, SMS, 위치, vCard 등
- Base64 인코딩된 QR 이미지
반응형
'[====== Development ======] > C#' 카테고리의 다른 글
DateTime.Parse 사용법 (0) | 2024.06.04 |
---|---|
[WPF] Window의 크기 조절 테두리의 색상을 변경하는 방법 (0) | 2024.02.15 |
[WPF] Toast Message Nuget (0) | 2024.02.13 |
C#에서 구조체 변수의 Column Attribute 값을 읽는 방법 (0) | 2024.01.24 |
C# Window Handle 값이 유효한지 확인하는 방법 (1) | 2024.01.04 |