MCPcopy Create free account

hub / github.com/GrinZero/meme-ai-generator / functions

Functions363 in github.com/GrinZero/meme-ai-generator

↓ 74 callersFunctionset
(value)
src/test/setup.ts:25
↓ 26 callersFunctiongetErrorMessage
(type: AIErrorType)
src/services/aiService.ts:52
↓ 20 callersFunctionget
()
src/test/setup.ts:24
↓ 15 callersFunctioncreateTestImageData
* Helper: Create a mock ImageData with a solid background and colored regions
src/services/imageSplitter.test.ts:27
↓ 15 callersFunctionfetchModels
(config: APIConfig)
src/services/modelListService.ts:262
↓ 13 callersFunctioncolorsAreSimilar
(c1: RGBAColor, c2: RGBAColor, tolerance: number)
src/services/imageSplitter.ts:64
↓ 13 callersFunctioncreateMockFile
(name: string, type: string)
src/services/imageValidation.test.ts:21
↓ 12 callersFunctioncreateRectangleSelection
( startPoint: Point, endPoint: Point, imageWidth: number, imageHeight: number )
src/services/selectionManager.ts:38
↓ 11 callersFunctionclearCache
()
src/services/modelListService.ts:119
↓ 11 callersFunctioncreateError
* 创建标准化错误对象
src/services/wechatStandardizationService.ts:65
↓ 11 callersFunctionimageToCanvasCoords
( imagePoint: Point, transform: CanvasTransform )
src/utils/geometry.ts:224
↓ 11 callersFunctionresetStore
()
src/store/useSelectionStore.property.test.ts:17
↓ 10 callersFunctioncreateMockBlob
(size: number)
src/services/aiSegmentationService.test.ts:20
↓ 10 callersFunctionisPolygonSelfIntersecting
(polygon: Polygon)
src/utils/geometry.ts:102
↓ 9 callersFunctioncalculateUploadableCount
( currentCount: number, maxCount: number, newFilesCount: number )
src/services/imageValidation.ts:49
↓ 9 callersFunctioncloneSelections
* 深拷贝选区数组
src/store/useSelectionStore.ts:21
↓ 9 callersFunctionnormalizeCoordinates
( point: Point, imageWidth: number, imageHeight: number, isPercentage: boolean )
src/services/coordinateUtils.ts:47
↓ 8 callersFunctiondetectEmojis
( imageData: ImageData, config: Partial<RegionDetectionConfig & { mergeDistance?: number; mergeDistancePer
src/services/imageSplitter.ts:394
↓ 8 callersFunctiongenerateFileName
(index: number, prefix: string = 'emoji')
src/services/downloadService.ts:29
↓ 8 callersFunctiongenerateImage
( config: APIConfig, prompt: string, images: UploadedImage[] )
src/services/aiService.ts:527
↓ 8 callersFunctionimageDataToBlob
(imageData: ImageData)
src/services/imageSplitter.ts:758
↓ 8 callersFunctionisValidImageFormat
(file: File)
src/services/imageValidation.ts:21
↓ 8 callersMethodparseResponse
* 解析 AI 响应 * @param response AI 返回的文本 * @param imageWidth 图片宽度 * @param imageHeight 图片高度 * @returns 解析后的分割区域列表
src/services/aiSegmentationService.ts:175
↓ 8 callersMethodsegment
* 对图片进行 AI 分割 * @param imageBlob 图片 Blob * @returns 分割结果
src/services/aiSegmentationService.ts:461
↓ 7 callersFunctionbuildFullPrompt
(config: PromptConfig)
src/services/promptBuilder.ts:45
↓ 7 callersFunctioncalculateScaledSize
( srcWidth: number, srcHeight: number, targetSize: number )
src/services/emojiNormalizer.ts:34
↓ 7 callersFunctioncreateServiceWithError
(errorMessage: string)
src/services/aiSegmentationService.test.ts:311
↓ 7 callersFunctiondetectBackgroundColor
( imageData: ImageData, config: Partial<BackgroundDetectionConfig> = {} )
src/services/imageSplitter.ts:72
↓ 7 callersFunctionisBackgroundPixel
(x: number, y: number)
src/services/imageSplitter.ts:889
↓ 7 callersFunctionisPointInPolygon
(point: Point, polygon: Polygon)
src/services/polygonCropper.ts:96
↓ 7 callersFunctionisValidPolygon
(polygon: Polygon)
src/services/coordinateUtils.ts:14
↓ 6 callersFunctioncanvasToBlob
* 将 Canvas 转换为 Blob
src/services/wechatImageProcessor.ts:41
↓ 6 callersFunctioncanvasToImageCoords
( canvasPoint: Point, transform: CanvasTransform )
src/utils/geometry.ts:208
↓ 6 callersFunctionclampCoordinates
( point: Point, imageWidth: number, imageHeight: number )
src/services/coordinateUtils.ts:28
↓ 6 callersFunctioncreatePolygonSelection
( vertices: Point[], imageWidth: number, imageHeight: number )
src/services/selectionManager.ts:81
↓ 6 callersFunctioncreateValidJsonResponse
(regions: unknown[])
src/services/aiSegmentationService.test.ts:27
↓ 6 callersFunctiongenerateStandardFileName
( type: WImageType, format: 'png' | 'jpeg' | 'gif' )
src/services/wechatFileService.ts:87
↓ 6 callersFunctiongetImageDataFromImage
(image: HTMLImageElement)
src/services/imageSplitter.ts:674
↓ 6 callersFunctionvalidateUploadFiles
( files: File[], currentCount: number, maxCount: number )
src/services/imageValidation.ts:76
↓ 5 callersMethodbuildPrompt
* 构建分割 prompt * @param imageWidth 图片宽度 * @param imageHeight 图片高度 * @returns 结构化 prompt
src/services/aiSegmentationService.ts:57
↓ 5 callersFunctioncalculateCenterOffset
( contentSize: { width: number; height: number }, canvasSize: number )
src/services/emojiNormalizer.ts:68
↓ 5 callersFunctioncalculateFitTransform
* Helper function to calculate fit transform (same logic as in SelectionCanvas) * This is extracted for testing purposes
src/components/SelectionCanvas.property.test.ts:17
↓ 5 callersFunctioncalculatePolygonBoundingBox
(polygon: Polygon)
src/services/polygonCropper.ts:18
↓ 5 callersFunctioncompressImage
( imageBlob: Blob, maxSizeKB: number, format: 'png' | 'jpeg' )
src/services/wechatImageProcessor.ts:156
↓ 5 callersFunctioncreateProcessedImage
* 创建 ProcessedImage 对象
src/services/wechatImageProcessor.ts:275
↓ 5 callersMethodextractJsonFromText
* 从文本中提取 JSON * @param text 可能包含 JSON 的文本 * @returns 提取的 JSON 字符串或 null
src/services/aiSegmentationService.ts:109
↓ 5 callersFunctiongenerateCacheKey
(style: APIStyle, apiKey: string, baseUrl: string)
src/services/modelListService.ts:80
↓ 5 callersFunctiongetDefaultModels
(style: APIStyle)
src/services/modelListService.ts:126
↓ 5 callersFunctionimageDataToPreviewUrl
(imageData: ImageData)
src/services/imageSplitter.ts:778
↓ 5 callersFunctionisBackgroundPixel
(x: number, y: number)
src/services/wechatBackgroundRemover.ts:201
↓ 5 callersFunctionisValidPNG
(blob: Blob)
src/services/downloadService.ts:37
↓ 5 callersFunctionresizeImage
( imageBlob: Blob, targetWidth: number, targetHeight: number, options: ResizeOptions = {} )
src/services/wechatImageProcessor.ts:106
↓ 5 callersFunctionsourceImagesToUploadedImages
* 将 SourceImage 转换为 UploadedImage(用于 AI 服务)
src/services/wechatStandardizationService.ts:53
↓ 5 callersFunctionvalidateAPIConfig
(apiKey: string, baseUrl: string)
src/services/configValidation.ts:57
↓ 4 callersFunctionbase64ToBlob
* 将 base64 图片数据转换为 Blob
src/services/aiService.ts:92
↓ 4 callersMethodcloneSelections
* 深拷贝选区数组
src/services/selectionManager.ts:497
↓ 4 callersFunctioncolorsAreSimilar
* 判断两个颜色是否相似(在容差范围内)
src/services/wechatBackgroundRemover.ts:114
↓ 4 callersFunctioncreateMockEmoji
* Helper: Create a mock ExtractedEmoji
src/services/downloadService.test.ts:46
↓ 4 callersFunctioncreateTestImageData
( width: number, height: number, fillColor: { r: number; g: number; b: number; a: number } = { r: 255, g
src/components/ManualSelectionPanel.property.test.ts:21
↓ 4 callersFunctioncreateZipBlob
( emojis: ExtractedEmoji[], options: DownloadOptions = {} )
src/services/downloadService.ts:190
↓ 4 callersFunctioncropImage
( imageData: ImageData, boundingBox: BoundingBox, padding: number = 5 )
src/services/imageSplitter.ts:704
↓ 4 callersFunctiondirection
* 计算叉积方向
src/utils/geometry.ts:81
↓ 4 callersFunctionextractAllEmojis
( image: HTMLImageElement | Blob, options: { /** 切割模式:'auto' 自动检测(默认) | 'grid' 强制网格切割 */ mode?: 'a
src/services/imageSplitter.ts:1146
↓ 4 callersFunctionextractFromSelection
( imageData: ImageData, selection: SelectionRegion, options: RegionExtractionOptions = {} )
src/services/regionExtractor.ts:249
↓ 4 callersFunctionfilterGeminiModels
(models: GeminiModelsResponse['models'])
src/services/modelListService.ts:155
↓ 4 callersFunctiongetPixelColor
(imageData: ImageData, x: number, y: number)
src/services/imageSplitter.ts:40
↓ 4 callersFunctiongetPixelColorFromData
* 从 ImageData 的 data 数组获取像素颜色
src/services/regionExtractor.ts:223
↓ 4 callersFunctiongetZipFileList
(zipBlob: Blob)
src/services/downloadService.ts:219
↓ 4 callersFunctioninferErrorType
(error: unknown)
src/services/errorHandler.ts:82
↓ 4 callersFunctionisPointInPolygon
(point: Point, polygon: Polygon)
src/utils/geometry.ts:15
↓ 4 callersFunctionisUserFriendlyMessage
(message: string)
src/services/errorHandler.ts:144
↓ 4 callersFunctionloadImageFromBlob
(blob: Blob)
src/services/imageSplitter.ts:686
↓ 4 callersFunctiononSegment
* 检查点是否在线段上(假设三点共线)
src/utils/geometry.ts:88
↓ 4 callersFunctionremoveBackgroundFloodFill
( imageData: ImageData, backgroundColor: RGBAColor, tolerance: number = 30, featherEdge: boolean = tru
src/services/imageSplitter.ts:855
↓ 4 callersFunctionvalidateBaseUrl
(baseUrl: string)
src/services/configValidation.ts:33
↓ 3 callersFunctionblobToImage
* 将 Blob 转换为 HTMLImageElement
src/services/wechatImageProcessor.ts:19
↓ 3 callersFunctionboundingBoxImageToCanvas
( boundingBox: BoundingBox, transform: CanvasTransform )
src/utils/geometry.ts:292
↓ 3 callersFunctionbuildGeminiModelsUrl
(baseUrl: string, apiKey: string)
src/services/modelListService.ts:133
↓ 3 callersFunctioncalculatePolygonBoundingBox
(polygon: Polygon)
src/utils/geometry.ts:138
↓ 3 callersMethodcanRedo
* 是否可以重做
src/services/selectionManager.ts:468
↓ 3 callersMethodcanUndo
* 是否可以撤销
src/services/selectionManager.ts:461
↓ 3 callersFunctioncolorDistance
(c1: RGBAColor, c2: RGBAColor)
src/services/imageSplitter.ts:53
↓ 3 callersFunctiondoEdgesIntersect
( p1: Point, p2: Point, p3: Point, p4: Point )
src/utils/geometry.ts:51
↓ 3 callersFunctionextractAllEmojisWithAI
( image: HTMLImageElement | Blob, options: AIExtractionOptions )
src/services/imageSplitter.ts:1352
↓ 3 callersFunctionextractBoundingBoxes
( labels: number[][], regionCount: number, config: Partial<RegionDetectionConfig> = {} )
src/services/imageSplitter.ts:228
↓ 3 callersFunctionfind
(x: number)
src/services/imageSplitter.ts:343
↓ 3 callersFunctiongenerateSelectionId
()
src/services/selectionManager.ts:24
↓ 3 callersFunctiongetContentBounds
(imageData: ImageData)
src/services/emojiNormalizer.ts:229
↓ 3 callersFunctiongetPixelColorAt
(x: number, y: number)
src/services/imageSplitter.ts:878
↓ 3 callersFunctiongetPixelColorAt
(x: number, y: number)
src/services/wechatBackgroundRemover.ts:191
↓ 3 callersFunctioninsertPolygonVertex
( selection: SelectionRegion, edgeIndex: number, insertPosition: Point, imageWidth: number, imageHei
src/services/selectionManager.ts:301
↓ 3 callersFunctionisConvexPolygon
(polygon: Polygon)
src/services/polygonCropper.ts:49
↓ 3 callersFunctionlabelConnectedRegions
(mask: boolean[][])
src/services/imageSplitter.ts:167
↓ 3 callersMethodpushAction
* 记录一个操作 * @param type 操作类型 * @param previousState 操作前的状态 * @param newState 操作后的状态
src/services/selectionManager.ts:401
↓ 3 callersFunctionrectangleSelectionArb
(imageWidth: number, imageHeight: number)
src/components/ManualSelectionPanel.property.test.ts:50
↓ 3 callersFunctionrectangleToBoundingBox
( topLeft: Point, bottomRight: Point )
src/services/coordinateUtils.ts:68
↓ 3 callersFunctionsimulatePolygonDrawing
( actions: Array<{ type: 'click' | 'escape'; point?: { x: number; y: number } }> )
src/components/SelectionCanvas.property.test.ts:41
↓ 3 callersFunctionstandardizeImage
( blob: Blob, size: number = DEFAULT_STANDARD_SIZE )
src/services/downloadService.ts:58
↓ 3 callersFunctiontriggerDownload
(blob: Blob, fileName: string)
src/services/downloadService.ts:105
↓ 3 callersMethodundo
* 撤销操作 * @returns 撤销后的状态,如果无法撤销则返回 null
src/services/selectionManager.ts:432
next →1–100 of 363, ranked by callers