IronQR'de QR Kodlarını SVG Olarak Kaydetme
IronQR, QR kodlarını doğrudan SVG'e dışa aktaramaz. Yine de oluşturulan bit eşlemi bir üçüncü taraf kütüphane ile SVG dikdörtgenleri olarak yeniden çizerek vektör dosyası üretebilirsiniz.
Sebep alttaki görüntü yığınıdır. IronQR, görüntü işleme için SixLabors.ImageSharp kullanır ve PNG, JPEG, BMP gibi raster formatları işler ancak SVG çıktısı sunmaz. SVG, bağımlılığın desteklediği bir hedef format değildir.
Çözüm
IronQR ile her zamanki gibi QR kodunu oluşturun, ardından pikseleri dolaşarak ve matrisi Svg.NET kullanarak vektör şekilleri olarak yeniden oluşturun. IronQR'nin QR oluşturmasını korursunuz ve SVG'nin stil ve yapısını tamamen kontrol edersiniz.
1. QR Kodunu Oluşturun ve Bir Bitmap'e Dönüştürün
QR kodu yazın, bir AnyBitmap'e kaydedin, sonra piksellerin tek tek okunabilmesi için bunu bir System.Drawing.Bitmap'e dönüştürün.
var qr = QrWriter.Write("Hello SVG");
var anyBitmap = qr.Save();
// Convert AnyBitmap to System.Drawing.Bitmap
System.Drawing.Bitmap bit = anyBitmap;
var qr = QrWriter.Write("Hello SVG");
var anyBitmap = qr.Save();
// Convert AnyBitmap to System.Drawing.Bitmap
System.Drawing.Bitmap bit = anyBitmap;
Dim qr = QrWriter.Write("Hello SVG")
Dim anyBitmap = qr.Save()
' Convert AnyBitmap to System.Drawing.Bitmap
Dim bit As System.Drawing.Bitmap = anyBitmap
2. Pikselleri SVG Dikdörtgenleri Olarak Yeniden Çizin
Bitmap boyutunda bir SvgDocument oluşturun, sonra pikselleri döngüye alın ve bir piksel siyah okunduğunda oraya 1x1 SvgRectangle ekleyin. Eşik kontrolü (R, G ve B, hepsi 128'in altında), siyaha yakın pikselleri doldurulmuş hücreler olarak kabul eder.
// Create new SVG document
var svgDoc = new SvgDocument
{
Width = bit.Width,
Height = bit.Height
};
// Loop through bitmap pixels and add black pixels as SVG rectangles
for (int y = 0; y < bit.Height; y++)
{
for (int x = 0; x < bit.Width; x++)
{
System.Drawing.Color pixel = bit.GetPixel(x, y);
// Check if pixel is black (or close enough)
if (pixel.R < 128 && pixel.G < 128 && pixel.B < 128)
{
var rect = new SvgRectangle
{
X = x,
Y = y,
Width = 1,
Height = 1,
Fill = new SvgColourServer(System.Drawing.Color.Black)
};
svgDoc.Children.Add(rect);
}
}
}
// Create new SVG document
var svgDoc = new SvgDocument
{
Width = bit.Width,
Height = bit.Height
};
// Loop through bitmap pixels and add black pixels as SVG rectangles
for (int y = 0; y < bit.Height; y++)
{
for (int x = 0; x < bit.Width; x++)
{
System.Drawing.Color pixel = bit.GetPixel(x, y);
// Check if pixel is black (or close enough)
if (pixel.R < 128 && pixel.G < 128 && pixel.B < 128)
{
var rect = new SvgRectangle
{
X = x,
Y = y,
Width = 1,
Height = 1,
Fill = new SvgColourServer(System.Drawing.Color.Black)
};
svgDoc.Children.Add(rect);
}
}
}
Imports System.Drawing
' Create new SVG document
Dim svgDoc As New SvgDocument With {
.Width = bit.Width,
.Height = bit.Height
}
' Loop through bitmap pixels and add black pixels as SVG rectangles
For y As Integer = 0 To bit.Height - 1
For x As Integer = 0 To bit.Width - 1
Dim pixel As Color = bit.GetPixel(x, y)
' Check if pixel is black (or close enough)
If pixel.R < 128 AndAlso pixel.G < 128 AndAlso pixel.B < 128 Then
Dim rect As New SvgRectangle With {
.X = x,
.Y = y,
.Width = 1,
.Height = 1,
.Fill = New SvgColourServer(Color.Black)
}
svgDoc.Children.Add(rect)
End If
Next
Next
3. SVG Dosyasını Yazın
Her siyah hücre eklendiği için belgeyi diske kaydedin.
// Save the result as SVG
svgDoc.Write("qr-from-ironqr.svg");
// Save the result as SVG
svgDoc.Write("qr-from-ironqr.svg");
' Save the result as SVG
svgDoc.Write("qr-from-ironqr.svg")
Bu size baskı veya yüksek çözünürlüklü kullanım için uygun ölçeklenebilir, vektör tabanlı bir QR kodu verir.

