From 1798d93e42848a1f4681acd53a5abb931be0ddae Mon Sep 17 00:00:00 2001 From: Microler <414464322@qq.com> Date: Sun, 1 May 2022 09:40:30 +0800 Subject: [PATCH] feat(renderLogo): updated props of logo --- README.md | 12 ++++- screenshot/qrcode_rectanglelogo.png | Bin 0 -> 28191 bytes src/index.js | 69 ++++++++++++++++------------ 3 files changed, 50 insertions(+), 31 deletions(-) create mode 100644 screenshot/qrcode_rectanglelogo.png diff --git a/README.md b/README.md index 343db95..e870b15 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,11 @@ Discussion: https://discord.gg/RvFM97v | - | - | | | | + +| QRCode rectangle logo | +| - | +| | + ## Installation Install dependency packages @@ -115,10 +120,13 @@ enableLinearGradient | false | enables or disables linear gradient linearGradient | ['rgb(255,0,0)','rgb(0,255,255)'] | array of 2 rgb colors used to create the linear gradient gradientDirection| [170,0,0,0] | the direction of the linear gradient logo | null | Image source object. Ex. {uri: 'base64string'} or {require('pathToImage')} -logoSize | 20% of size | Size of the imprinted logo. Bigger logo = less error correction in QR code +logoWidth | 20% of size | Width of the imprinted logo. Bigger logo = less error correction in QR code +logoHeight | 20% of size | Height of the imprinted logo. Bigger logo = less error correction in QR code logoBackgroundColor | backgroundColor | The logo gets a filled quadratic background with this color. Use 'transparent' if your logo already has its own backdrop. -logoMargin | 2 | logo's distance to its wrapper +logoMarginX | 2 | logo's horizontal distance to its wrapper +logoMarginY | 2 | logo's vertical distance to its wrapper logoBorderRadius | 0 | the border-radius of logo image (Android is not supported) +logoPreserveAspectRatio | 'xMidYMid slice' | the preserveAspectRatio of logo image. If you want to change the zoom property of the image, please see the [preserveAspectRatio](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/preserveAspectRatio) property for image in SVG. quietZone | 0 | quiet zone around the qr in pixels (useful when saving image to gallery) getRef | null | Get SVG ref for further usage ecl | 'M' | Error correction level diff --git a/screenshot/qrcode_rectanglelogo.png b/screenshot/qrcode_rectanglelogo.png new file mode 100644 index 0000000000000000000000000000000000000000..81e995d57a9d68b9050b71a4d2e64ebe3b1ef9c7 GIT binary patch literal 28191 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

IuLG0H2_8{Y#Vi+Z7j^skcS++{e)V1A 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 literal 0 HcmV?d00001 diff --git a/src/index.js b/src/index.js index 99c2e68..8373c72 100644 --- a/src/index.js +++ b/src/index.js @@ -15,31 +15,36 @@ import transformMatrixIntoPath from './transformMatrixIntoPath' const renderLogo = ({ size, logo, - logoSize, + logoWidth, + logoHeight, logoBackgroundColor, - logoMargin, - logoBorderRadius + logoMarginX, + logoMarginY, + logoBorderRadius, + logoPreserveAspectRatio }) => { - const logoPosition = (size - logoSize - logoMargin * 2) / 2 - const logoBackgroundSize = logoSize + logoMargin * 2 - const logoBackgroundBorderRadius = - logoBorderRadius + (logoMargin / logoSize) * logoBorderRadius + const logoPositionX = (size - logoWidth - logoMarginX * 2) / 2 + const logoPositionY = (size - logoHeight - logoMarginY * 2) / 2 + const logoBackgroundSizeWidth = logoWidth + logoMarginX * 2 + const logoBackgroundSizeHeight = logoHeight + logoMarginY * 2 + const logoBackgroundBorderRadiusX = logoBorderRadius + (logoMarginX / logoWidth) * logoBorderRadius + const logoBackgroundBorderRadiusY = logoBorderRadius + (logoMarginY / logoHeight) * logoBorderRadius return ( - + - + - - + @@ -72,10 +77,13 @@ const QRCode = ({ color = 'black', backgroundColor = 'white', logo, - logoSize = size * 0.2, + logoWidth = size * 0.2, + logoHeight = size * 0.2, logoBackgroundColor = 'transparent', - logoMargin = 2, + logoMarginX = 2, + logoMarginY = 2, logoBorderRadius = 0, + logoPreserveAspectRatio = 'xMidYMid slice', quietZone = 0, enableLinearGradient = false, gradientDirection = ['0%', '0%', '100%', '100%'], @@ -148,10 +156,13 @@ const QRCode = ({ renderLogo({ size, logo, - logoSize, + logoWidth, + logoHeight, logoBackgroundColor, - logoMargin, - logoBorderRadius + logoMarginX, + logoMarginY, + logoBorderRadius, + logoPreserveAspectRatio })} )