(*by Nasser M. Abbasi, Version: August 7, 2013 *)
Manipulate[
Module[{work = Table[0, {116}, {150}, {3}], channel},
If[r1 > r2, r1 = r2];
If[c1 > c2, c1 = c2];
channel = Which[
p1 && p2 && p3, 1 ;; 3,
p1 && Not[p2] && Not[p3], 1,
p1 && p2 && Not[p3], 1 ;; 2,
p1 && Not[p2] && p3, {1, 3},
Not[p1] && p2 && p3, 2 ;; 3,
Not[p1] && p2 && Not[p3], 2,
Not[p1] && p3 && Not[p2], 3,
True, (p1 = True; 1)(*must have atleast one channel*)
];
work[[r1 ;; r2, c1 ;; c2, channel]] =
data[[r1 ;; r2, c1 ;; c2, channel]];
Grid[{
{Row[{"ImageData[[ ", padIt2[r1, 3], ";;", padIt2[r2, 3], " , ",
padIt2[c1, 3], ";;", padIt2[c2, 3], " , ", channel, " ]]"}]},
{Grid[{
{ImageResize[Image[data], 350], ImageResize[Image[work], 350]}}]
}
}, Alignment -> Center, Frame -> All, FrameStyle -> LightGray,
Spacings -> {1, 1}]
],
Style[Text[Grid[{
{
Grid[{
{"starting row",
Control[{{r1, 17, ""}, 1, 116, 1, ImageSize -> Tiny}],
Spacer[2], Dynamic[padIt2[r1, 3]]},
{"ending row",
Control[{{r2, 83, ""}, 1, 116, 1, ImageSize -> Tiny}],
Spacer[2], Dynamic[padIt2[r2, 3]]},
{"starting column",
Control[{{c1, 10, ""}, 1, 150, 1, ImageSize -> Tiny}],
Spacer[2], Dynamic[padIt2[c1, 3]]},
{"ending column",
Control[{{c2, 133, ""}, 1, 150, 1, ImageSize -> Tiny}],
Spacer[2], Dynamic[padIt2[c2, 3]]}
}, Alignment -> Left, Frame -> True,
FrameStyle -> Directive[Thickness[.001], Gray]],
Grid[{
{"select color channel"},
{Grid[{
{"red", Checkbox[Dynamic[p1, {p1 = #} &]]},
{"green", Checkbox[Dynamic[p2, {p2 = #} &]]},
{"blue", Checkbox[Dynamic[p3, {p3 = #} &]]}
}, Alignment -> Left, Spacings -> {0.4, .7}]
}
}, Alignment -> Center, Frame -> True,
FrameStyle -> Directive[Thickness[.001], Gray],
Spacings -> {0.5, .7}]
}
}, Alignment -> Center]
], 12],
{{p1, True}, None},
{{p2, True}, None},
{{p3, True}, None},
Alignment -> Center,
ImageMargins -> 1,
FrameMargins -> 1,
Paneled -> True,
AutorunSequencing -> Automatic,
SynchronousUpdating -> True,
ContinuousAction -> True,
SynchronousInitialization -> False,
SynchronousUpdating -> True,
Initialization :>
(
numeric = (Element[#, Reals] &);
padIt2[v_?numeric, f_Integer] :=
AccountingForm[Chop[v] , f, NumberSigns -> {"", ""},
NumberPadding -> {"0", "0"}, SignPadding -> True];
data = ImageData[]; (*not included*)
)
]