Compare commits

...

4 Commits
v1.9.0 ... main

Author SHA1 Message Date
akaneyu a7d9ccf0da Update readme 2025-04-09 20:32:07 +09:00
akaneyu 80eb0edaec Update readme 2025-04-08 00:04:43 +09:00
akaneyu 0a29707c3c Fix: start position of the selection may be incorrect 2025-03-23 13:37:58 +09:00
akaneyu bbace1896a Support Blender 4.4 2025-03-23 00:57:13 +09:00
9 changed files with 84 additions and 19 deletions

View File

@ -1,3 +1,57 @@
# Image Editor Plus
Image Editor Plus is an add-on that lets you modify your image in seconds. Clear, fill, flip, rotation, adjusting colors, and applying some filters in just a few clicks without external editors such as PhotoShop or Gimp.
![Image Editor Plus](doc/images/featured.png)
Image Editor Plus is a Blender add-on that lets you modify your image in seconds. Clear, fill, flip, rotation, adjusting colors, and applying some filters in just a few clicks without external editors such as PhotoShop or Gimp.
This add-on extends the UV/Image Editor in Blender and provides the following operations.
- Cut/Copy/Paste
- Clear, Fill
- Crop
- Adjust hue/saturation
- Adjust brightness/contrast
- Adjust gamma
- Adjust color curve
- Replace color
- Flip, Rotate
- Canvas size
- Offset
- Apply filters
NOTE: Currently, text editing is provided as a separate add-on: [Image Editor+ Text Tool](https://superhivemarket.com/products/imedp-text-tool)
These image operations can be applied to packed/unpacked images, and reflected to the 3D model view immediately.
You can make a selection to edit the desired area on your image (currently only rectangle selection supported).
![Adjust color](doc/images/adjust_color.png)
It's easy to copy/paste a selection or an entire image. The pasted images are displayed as layers, and they can be moved, rotated or scaled.
NOTE: To display pasted layers in the 3D View, you need to use a [Image Layers Node](https://superhivemarket.com/products/image-layers-node) instead of built-in Texture Node.
![Pasted layers](doc/images/pasted_layers_2.png)
## Filters
By applying the some filters, you can add special effects to your images.
- Blur
- Sharpen
- Add noise
- Pixelize (Mosaic)
- Make seamless
- Normal map
"Make seamless" filter is useful for making your image tileable.
![Filters](doc/images/filters.png)
## Normal Map Generator
Normal Map is a texture where every pixel represents a normal vector and is used to add bumps to a surface.
This add-on uses a height map (black: low, white: high) as input and can convert it to a normal map.
![Normal map](doc/images/normal_map.png)

View File

@ -1,5 +1,5 @@
'''
Copyright (C) 2021 - 2024 Akaneyu
Copyright (C) 2021 - 2025 Akaneyu
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -18,7 +18,7 @@
bl_info = {
"name": "Image Editor Plus",
"author": "akaneyu",
"version": (1, 9, 0),
"version": (1, 10, 0),
"blender": (3, 3, 0),
"location": "Image",
"warning": "",

View File

@ -1,5 +1,5 @@
'''
Copyright (C) 2021 - 2024 Akaneyu
Copyright (C) 2021 - 2025 Akaneyu
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -136,17 +136,18 @@ def draw_handler():
# release the selection if the image is changed
if area_session.selection or area_session.selection_region:
if img != area_session.prev_image:
cancel_selection(context)
if area_session.prev_image:
if img != area_session.prev_image:
cancel_selection(context)
elif width != area_session.prev_image_width \
or height != area_session.prev_image_height:
elif width != area_session.prev_image_width \
or height != area_session.prev_image_height:
crop_selection(context)
crop_selection(context)
area_session.prev_image = img
area_session.prev_image_width = width
area_session.prev_image_height = height
area_session.prev_image = img
area_session.prev_image_width = width
area_session.prev_image_height = height
if area_session.layer_moving \
or area_session.layer_rotating \

View File

@ -1,5 +1,5 @@
'''
Copyright (C) 2021 - 2024 Akaneyu
Copyright (C) 2021 - 2025 Akaneyu
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -26,7 +26,9 @@ class IMAGE_EDITOR_PLUS_OT_make_selection(bpy.types.Operator):
bl_idname = "image_editor_plus.make_selection"
bl_label = "Make Selection"
def __init__(self):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.lmb = False
def modal(self, context, event):
@ -43,12 +45,14 @@ class IMAGE_EDITOR_PLUS_OT_make_selection(bpy.types.Operator):
if area_session.selection_region:
area_session.selection_region[1] = region_pos
else:
area_session.selection_region = [region_pos, region_pos]
elif event.type == 'LEFTMOUSE':
if event.value == 'PRESS':
self.lmb = True
region_pos = [event.mouse_region_x, event.mouse_region_y]
area_session.selection_region = [region_pos, region_pos]
elif event.value == 'RELEASE':
self.lmb = False
@ -397,7 +401,9 @@ class IMAGE_EDITOR_PLUS_OT_move_layer(bpy.types.Operator):
bl_idname = "image_editor_plus.move_layer"
bl_label = "Move Layer"
def __init__(self):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.start_input_position = [0, 0]
self.start_layer_location = [0, 0]
@ -885,7 +891,9 @@ class IMAGE_EDITOR_PLUS_OT_rotate_layer_arbitrary(bpy.types.Operator):
bl_idname = "image_editor_plus.rotate_layer_arbitrary"
bl_label = "Rotate Layer Arbitrary"
def __init__(self):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.start_input_position = [0, 0]
self.start_layer_angle = 0
@ -967,7 +975,9 @@ class IMAGE_EDITOR_PLUS_OT_scale_layer(bpy.types.Operator):
bl_idname = "image_editor_plus.scale_layer"
bl_label = "Scale Layer"
def __init__(self):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.start_input_position = [0, 0]
self.start_layer_scale_x = 1.0
self.start_layer_scale_y = 1.0

BIN
doc/images/adjust_color.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 584 KiB

BIN
doc/images/featured.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 464 KiB

BIN
doc/images/filters.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 509 KiB

BIN
doc/images/normal_map.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 482 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 KiB