UNPKG

@lobehub/chat

Version:

Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.

68 lines (54 loc) 1.71 kB
import prand from 'pure-rand'; import { IMAGE_GENERATION_CONFIG } from '@/const/imageGeneration'; export const MAX_SEED = 2 ** 31 - 1; export function generateUniqueSeeds(seedCount: number): number[] { // Use current timestamp as the initial seed const initialSeed = Date.now(); // Create an instance of Xoroshiro128+ random number generator let rng = prand.xoroshiro128plus(initialSeed); const seeds = new Set<number>(); while (seeds.size < seedCount) { // Generate a 31-bit random integer (PostgreSQL INTEGER compatible) const [randomInt, nextRng] = prand.uniformIntDistribution(0, MAX_SEED, rng); // Update RNG state rng = nextRng; // Add to the set, ensuring uniqueness seeds.add(randomInt); } return Array.from(seeds); } /** * Calculate thumbnail dimensions * Generate thumbnail with configurable max edge size */ export function calculateThumbnailDimensions( originalWidth: number, originalHeight: number, maxSize: number = IMAGE_GENERATION_CONFIG.THUMBNAIL_MAX_SIZE, ): { shouldResize: boolean; thumbnailHeight: number; thumbnailWidth: number; } { const shouldResize = originalWidth > maxSize || originalHeight > maxSize; if (!shouldResize) { return { shouldResize: false, thumbnailHeight: originalHeight, thumbnailWidth: originalWidth, }; } const thumbnailWidth = originalWidth > originalHeight ? maxSize : Math.round((originalWidth * maxSize) / originalHeight); const thumbnailHeight = originalHeight > originalWidth ? maxSize : Math.round((originalHeight * maxSize) / originalWidth); return { shouldResize: true, thumbnailHeight, thumbnailWidth, }; }