How to create the same png icon but with a different color?
2 次查看(过去 30 天)
显示 更早的评论
Here is a .png of a button icon.
I need exactly the same icon, with the same style but a green color.
How can I achieve that?
0 个评论
采纳的回答
Image Analyst
2019-3-8
Try this:
redButton = imread('red button.png');
[rows, columns, numberOfColorChannels] = size(redButton)
% Convert to Hue, saturation, value color space.
hsvImage = rgb2hsv(redButton);
% Make hue 0.3. Adjust as needed.
hsvImage(:, :, 1) = 0.3 * ones(rows, columns);
% Go back to RGB space
greenButton = im2uint8(hsv2rgb(hsvImage));
% Display both images.
subplot(2, 1, 1);
imshow(redButton);
subplot(2, 1, 2);
imshow(greenButton);
If you want to cycle through a bunch of colors to see them all, try this:
for h = 0 : 0.05 : 1
redButton = imread('red button.png');
[rows, columns, numberOfColorChannels] = size(redButton)
hsvImage = rgb2hsv(redButton);
% Make hue the current h color.
hsvImage(:, :, 1) = h * ones(rows, columns);
greenButton = im2uint8(hsv2rgb(hsvImage));
% Display both images.
subplot(2, 1, 1);
imshow(redButton);
subplot(2, 1, 2);
imshow(greenButton);
drawnow
promptMessage = sprintf('This Hue = %.2f\nDo you want to Continue, or Quit?', h);
titleBarCaption = 'Continue?';
buttonText = questdlg(promptMessage, titleBarCaption, 'Continue', 'Quit', 'Continue');
if contains(buttonText, 'Quit')
break;
end
end
2 个评论
更多回答(1 个)
Walter Roberson
2019-3-7
img = imread('ButtonRed.png');
mask = img(:,:,2) < 128; %true for red areas but false for white areas
npix = nnz(mask);
temp = [zeros(npix,1), ones(npix,1), zeros(npix,1)]; %green
img(repmat(mask,1,1,3)) = temp;
imwrite(img, 'ButtonGreen.png');
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!