5
5
using QRCoderTests . XUnitExtenstions ;
6
6
using System . IO ;
7
7
using System . Security . Cryptography ;
8
+ #if ! NETCOREAPP1_1
9
+ using System . Drawing ;
10
+ #endif
8
11
9
12
namespace QRCoderTests
10
13
{
@@ -30,6 +33,62 @@ public void can_create_standard_qrcode_graphic()
30
33
31
34
result . ShouldBe ( "41d3313c10d84034d67d476eec04163f" ) ;
32
35
}
36
+
37
+ [ Fact ]
38
+ [ Category ( "QRRenderer/QRCode" ) ]
39
+ public void can_create_qrcode_with_transparent_logo_graphic ( )
40
+ {
41
+ //Create dummy logo
42
+ var logo = new Bitmap ( 32 , 32 ) ;
43
+ var gfx = Graphics . FromImage ( logo ) ;
44
+ gfx . SmoothingMode = System . Drawing . Drawing2D . SmoothingMode . AntiAlias ;
45
+ gfx . FillRectangle ( Brushes . Transparent , new Rectangle ( 0 , 0 , 32 , 32 ) ) ;
46
+ gfx . FillEllipse ( Brushes . Red , new Rectangle ( 0 , 0 , 32 , 32 ) ) ;
47
+ gfx . Save ( ) ;
48
+
49
+ //Create QR code
50
+ var gen = new QRCodeGenerator ( ) ;
51
+ var data = gen . CreateQrCode ( "This is a quick test! 123#?" , QRCodeGenerator . ECCLevel . H ) ;
52
+ var bmp = new QRCode ( data ) . GetGraphic ( 10 , Color . Black , Color . Transparent , icon : logo ) ;
53
+
54
+ var ms = new MemoryStream ( ) ;
55
+ bmp . Save ( ms , System . Drawing . Imaging . ImageFormat . Png ) ;
56
+ var imgBytes = ms . ToArray ( ) ;
57
+ var md5 = new MD5CryptoServiceProvider ( ) ;
58
+ var hash = md5 . ComputeHash ( imgBytes ) ;
59
+ var result = BitConverter . ToString ( hash ) . Replace ( "-" , "" ) . ToLower ( ) ;
60
+ ms . Dispose ( ) ;
61
+
62
+ result . ShouldBe ( "8f03d2c3fc5998cebb46658c3e6293b1" ) ;
63
+ }
64
+
65
+ [ Fact ]
66
+ [ Category ( "QRRenderer/QRCode" ) ]
67
+ public void can_create_qrcode_with_non_transparent_logo_graphic ( )
68
+ {
69
+ //Create dummy logo
70
+ var logo = new Bitmap ( 32 , 32 ) ;
71
+ var gfx = Graphics . FromImage ( logo ) ;
72
+ gfx . SmoothingMode = System . Drawing . Drawing2D . SmoothingMode . AntiAlias ;
73
+ gfx . FillRectangle ( Brushes . White , new Rectangle ( 0 , 0 , 32 , 32 ) ) ;
74
+ gfx . FillEllipse ( Brushes . Red , new Rectangle ( 0 , 0 , 32 , 32 ) ) ;
75
+ gfx . Save ( ) ;
76
+
77
+ //Create QR code
78
+ var gen = new QRCodeGenerator ( ) ;
79
+ var data = gen . CreateQrCode ( "This is a quick test! 123#?" , QRCodeGenerator . ECCLevel . H ) ;
80
+ var bmp = new QRCode ( data ) . GetGraphic ( 10 , Color . Black , Color . White , icon : logo ) ;
81
+
82
+ var ms = new MemoryStream ( ) ;
83
+ bmp . Save ( ms , System . Drawing . Imaging . ImageFormat . Png ) ;
84
+ var imgBytes = ms . ToArray ( ) ;
85
+ var md5 = new MD5CryptoServiceProvider ( ) ;
86
+ var hash = md5 . ComputeHash ( imgBytes ) ;
87
+ var result = BitConverter . ToString ( hash ) . Replace ( "-" , "" ) . ToLower ( ) ;
88
+ ms . Dispose ( ) ;
89
+
90
+ result . ShouldBe ( "c2aae3658c7fa20cb5d22948d859c614" ) ;
91
+ }
33
92
#endif
34
93
}
35
94
}
0 commit comments