From a7ec2303bd1a17eb0ab3c65741869b7930ea8c4e Mon Sep 17 00:00:00 2001 From: dfdgsdfg Date: Tue, 17 Jan 2023 21:45:17 +0900 Subject: [PATCH] feat: getRandomBlurhash --- lib/src/blurhash.dart | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/lib/src/blurhash.dart b/lib/src/blurhash.dart index 9fdfc65..cad9b59 100644 --- a/lib/src/blurhash.dart +++ b/lib/src/blurhash.dart @@ -226,3 +226,33 @@ const styles = { ) ] }; + +String getRandomBlurhash() { + final rnd = Random(); + final seed = rnd.nextInt(265); + final id = _makeSeed(seed); + + var result = ''; + for (var i = 1; i <= (seed * 1024); i++) { + final digit = (seed / pow(83, ((seed / 128) - i))) % 83; + result += _digitCharacters[digit.floor()]; + } + + final sizeFlag = _decode83(result[0]); + final numY = ((sizeFlag / 9) + 1).floor(); + final numX = (sizeFlag % 9) + 1; + + return result.substring(0, 4 + 2 * numX * numY); +} + +_makeSeed(int length) { + final rnd = Random(); + var result = ''; + const characters = '1234567890'; + const charactersLength = characters.length; + for (var i = 0; i < length; i++) { + result += characters[rnd.nextInt(charactersLength)]; + } + return int.parse(result); +} +