Compare commits
3 Commits
get-size-n
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
312d511630 | ||
|
|
4f4f1c642a | ||
|
|
010954d277 |
@@ -16,8 +16,7 @@ from inspect import cleandoc
|
|||||||
import torch
|
import torch
|
||||||
import comfy.utils
|
import comfy.utils
|
||||||
|
|
||||||
from comfy.comfy_types import FileLocator, IO
|
from comfy.comfy_types import FileLocator
|
||||||
from server import PromptServer
|
|
||||||
|
|
||||||
MAX_RESOLUTION = nodes.MAX_RESOLUTION
|
MAX_RESOLUTION = nodes.MAX_RESOLUTION
|
||||||
|
|
||||||
@@ -492,36 +491,6 @@ class SaveSVGNode:
|
|||||||
counter += 1
|
counter += 1
|
||||||
return { "ui": { "images": results } }
|
return { "ui": { "images": results } }
|
||||||
|
|
||||||
class GetImageSize:
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def INPUT_TYPES(s):
|
|
||||||
return {
|
|
||||||
"required": {
|
|
||||||
"image": (IO.IMAGE,),
|
|
||||||
},
|
|
||||||
"hidden": {
|
|
||||||
"unique_id": "UNIQUE_ID",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
RETURN_TYPES = (IO.INT, IO.INT)
|
|
||||||
RETURN_NAMES = ("width", "height")
|
|
||||||
FUNCTION = "get_size"
|
|
||||||
|
|
||||||
CATEGORY = "image"
|
|
||||||
DESCRIPTION = """Returns width and height of the image, and passes it through unchanged."""
|
|
||||||
|
|
||||||
def get_size(self, image, unique_id=None) -> tuple[int, int]:
|
|
||||||
height = image.shape[1]
|
|
||||||
width = image.shape[2]
|
|
||||||
|
|
||||||
# Send progress text to display size on the node
|
|
||||||
if unique_id:
|
|
||||||
PromptServer.instance.send_progress_text(f"width: {width}, height: {height}", unique_id)
|
|
||||||
|
|
||||||
return width, height
|
|
||||||
|
|
||||||
NODE_CLASS_MAPPINGS = {
|
NODE_CLASS_MAPPINGS = {
|
||||||
"ImageCrop": ImageCrop,
|
"ImageCrop": ImageCrop,
|
||||||
"RepeatImageBatch": RepeatImageBatch,
|
"RepeatImageBatch": RepeatImageBatch,
|
||||||
@@ -531,5 +500,4 @@ NODE_CLASS_MAPPINGS = {
|
|||||||
"SaveAnimatedPNG": SaveAnimatedPNG,
|
"SaveAnimatedPNG": SaveAnimatedPNG,
|
||||||
"SaveSVGNode": SaveSVGNode,
|
"SaveSVGNode": SaveSVGNode,
|
||||||
"ImageStitch": ImageStitch,
|
"ImageStitch": ImageStitch,
|
||||||
"GetImageSize": GetImageSize,
|
|
||||||
}
|
}
|
||||||
|
|||||||
1
nodes.py
1
nodes.py
@@ -2067,7 +2067,6 @@ NODE_DISPLAY_NAME_MAPPINGS = {
|
|||||||
"ImageQuantize": "Image Quantize",
|
"ImageQuantize": "Image Quantize",
|
||||||
"ImageSharpen": "Image Sharpen",
|
"ImageSharpen": "Image Sharpen",
|
||||||
"ImageScaleToTotalPixels": "Scale Image to Total Pixels",
|
"ImageScaleToTotalPixels": "Scale Image to Total Pixels",
|
||||||
"GetImageSize": "Get Image Size",
|
|
||||||
# _for_testing
|
# _for_testing
|
||||||
"VAEDecodeTiled": "VAE Decode (Tiled)",
|
"VAEDecodeTiled": "VAE Decode (Tiled)",
|
||||||
"VAEEncodeTiled": "VAE Encode (Tiled)",
|
"VAEEncodeTiled": "VAE Encode (Tiled)",
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
comfyui-frontend-package==1.21.5
|
comfyui-frontend-package==1.21.6
|
||||||
comfyui-workflow-templates==0.1.25
|
comfyui-workflow-templates==0.1.25
|
||||||
comfyui-embedded-docs==0.2.0
|
comfyui-embedded-docs==0.2.0
|
||||||
torch
|
torch
|
||||||
|
|||||||
@@ -390,7 +390,7 @@ class PromptServer():
|
|||||||
async def view_image(request):
|
async def view_image(request):
|
||||||
if "filename" in request.rel_url.query:
|
if "filename" in request.rel_url.query:
|
||||||
filename = request.rel_url.query["filename"]
|
filename = request.rel_url.query["filename"]
|
||||||
filename,output_dir = folder_paths.annotated_filepath(filename)
|
filename, output_dir = folder_paths.annotated_filepath(filename)
|
||||||
|
|
||||||
if not filename:
|
if not filename:
|
||||||
return web.Response(status=400)
|
return web.Response(status=400)
|
||||||
@@ -476,9 +476,8 @@ class PromptServer():
|
|||||||
# Get content type from mimetype, defaulting to 'application/octet-stream'
|
# Get content type from mimetype, defaulting to 'application/octet-stream'
|
||||||
content_type = mimetypes.guess_type(filename)[0] or 'application/octet-stream'
|
content_type = mimetypes.guess_type(filename)[0] or 'application/octet-stream'
|
||||||
|
|
||||||
# For security, force certain extensions to download instead of display
|
# For security, force certain mimetypes to download instead of display
|
||||||
file_extension = os.path.splitext(filename)[1].lower()
|
if content_type in {'text/html', 'text/html-sandboxed', 'application/xhtml+xml', 'text/javascript', 'text/css'}:
|
||||||
if file_extension in {'.html', '.htm', '.js', '.css'}:
|
|
||||||
content_type = 'application/octet-stream' # Forces download
|
content_type = 'application/octet-stream' # Forces download
|
||||||
|
|
||||||
return web.FileResponse(
|
return web.FileResponse(
|
||||||
|
|||||||
@@ -5,10 +5,7 @@ from unittest.mock import patch, MagicMock
|
|||||||
mock_nodes = MagicMock()
|
mock_nodes = MagicMock()
|
||||||
mock_nodes.MAX_RESOLUTION = 16384
|
mock_nodes.MAX_RESOLUTION = 16384
|
||||||
|
|
||||||
# Mock server module for PromptServer
|
with patch.dict('sys.modules', {'nodes': mock_nodes}):
|
||||||
mock_server = MagicMock()
|
|
||||||
|
|
||||||
with patch.dict('sys.modules', {'nodes': mock_nodes, 'server': mock_server}):
|
|
||||||
from comfy_extras.nodes_images import ImageStitch
|
from comfy_extras.nodes_images import ImageStitch
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user