BrushCue Example: RGB Color Shift¶

Open In Colab

You can use this tool online at https://www.brushcue.com/tools/rgb-color-shift

In [ ]:
!pip install brushcue
In [1]:
import brushcue
from PIL import Image
import io

input_image_1 = brushcue.composition_monet_women_with_parasol() # insert your own image here
blue_linear_transform_2 = brushcue.composition_linear_transform(input_image_1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0)
green_linear_transform_3 = brushcue.composition_linear_transform(input_image_1, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0)
red_linear_transform_4 = brushcue.composition_linear_transform(input_image_1, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0)
transform_2d_identity_5 = brushcue.transform2_identity()
transform_2d_identity_6 = brushcue.transform2_identity()
composition_size_7 = brushcue.composition_size(input_image_1)
composition_size_8 = brushcue.composition_size(input_image_1)
vector_2_int_from_components_9 = brushcue.vector2i_from_components(-56, -69)
vector_2_int_from_components_10 = brushcue.vector2i_from_components(84, 30)
vector_2_int_get_x_11 = brushcue.vector2i_x(composition_size_7)
vector_2_int_get_y_12 = brushcue.vector2i_y(composition_size_8)
blue_offset_13 = brushcue.vector2i_passthrough(vector_2_int_from_components_9)
green_offset_14 = brushcue.vector2i_passthrough(vector_2_int_from_components_10)
vector_2_int_get_x_15 = brushcue.vector2i_x(blue_offset_13)
vector_2_int_get_y_16 = brushcue.vector2i_y(blue_offset_13)
vector_2_int_get_x_17 = brushcue.vector2i_x(green_offset_14)
vector_2_int_get_x_18 = brushcue.vector2i_x(blue_offset_13)
vector_2_int_get_y_19 = brushcue.vector2i_y(green_offset_14)
vector_2_int_get_y_20 = brushcue.vector2i_y(blue_offset_13)
vector_2_int_get_x_21 = brushcue.vector2i_x(green_offset_14)
vector_2_int_get_y_22 = brushcue.vector2i_y(green_offset_14)
int_to_float_23 = brushcue.int_to_float(vector_2_int_get_x_15)
int_to_float_24 = brushcue.int_to_float(vector_2_int_get_y_16)
int_absolute_value_25 = brushcue.int_abs(vector_2_int_get_x_17)
int_absolute_value_26 = brushcue.int_abs(vector_2_int_get_x_18)
int_absolute_value_27 = brushcue.int_abs(vector_2_int_get_y_19)
int_absolute_value_28 = brushcue.int_abs(vector_2_int_get_y_20)
int_to_float_29 = brushcue.int_to_float(vector_2_int_get_x_21)
int_to_float_30 = brushcue.int_to_float(vector_2_int_get_y_22)
vector_2_float_from_components_31 = brushcue.vector2f_from_components(int_to_float_23, int_to_float_24)
int_max_32 = brushcue.int_max(int_absolute_value_25, int_absolute_value_26)
int_max_33 = brushcue.int_max(int_absolute_value_27, int_absolute_value_28)
vector_2_float_from_components_34 = brushcue.vector2f_from_components(int_to_float_29, int_to_float_30)
transform_2d_translation_35 = brushcue.transform2_translation(transform_2d_identity_5, vector_2_float_from_components_31)
crop_x_component_36 = brushcue.int_passthrough(int_max_32)
crop_y_component_37 = brushcue.int_passthrough(int_max_33)
transform_2d_translation_38 = brushcue.transform2_translation(transform_2d_identity_6, vector_2_float_from_components_34)
int_multiply_39 = brushcue.int_multiply(crop_x_component_36, 2)
int_multiply_40 = brushcue.int_multiply(crop_y_component_37, 2)
blend_green_over_red_41 = brushcue.composition_blend_add(green_linear_transform_3, red_linear_transform_4, transform_2d_translation_38)
int_subtract_42 = brushcue.int_subtract(vector_2_int_get_x_11, int_multiply_39)
int_subtract_43 = brushcue.int_subtract(vector_2_int_get_y_12, int_multiply_40)
blend_blue_over_green_and_red_44 = brushcue.composition_blend_add(blue_linear_transform_2, blend_green_over_red_41, transform_2d_translation_35)
bounds_2d_int_from_x_y_width_height_45 = brushcue.bounds2i_from_x_y_width_height(crop_x_component_36, crop_y_component_37, int_subtract_42, int_subtract_43)
composition_crop_46 = brushcue.composition_crop(blend_blue_over_green_and_red_44, bounds_2d_int_from_x_y_width_height_45)

ctx = brushcue.Context()
result = composition_crop_46.execute(ctx)
composition = result.as_composition()
data_bytes = composition.to_image_bytes(ctx)
img = Image.open(io.BytesIO(data_bytes))
img.thumbnail((400, 400)) # remove this line for full resolution
img
Out[1]:
No description has been provided for this image