How to convert a 4-channel image to 3-channel image in an elegant way?












4












$begingroup$


I have a 4-channel image (RGBA). I want to reduce its channel count from 4 to 3.



The method I am using currently is to Right click and Save as a .png file. After that when I Import it in Mathematica, the channel count is reduced to 3. Is there a more elegant way to do that?



Note: RemoveAlphaChannel function won't work. Because that will change the appearance of the original image (see the example below).



This is a 4-channel picture from ref / AlphaChannel:



4-channel picture



 img = Import @ "https://i.stack.imgur.com/XvzDc.png"


This is the 3-channel picture which is what I want:



3-channel picture



If I use RemoveAlphaChannel, I will get this picture instead:



Picture after RemoveAlphaChannel










share|improve this question











$endgroup$








  • 3




    $begingroup$
    does RemoveAlphaChannel[img, White] not work for you? it does give 3-channel image ( ImageChannels@RemoveAlphaChannel[img, White] is 3).
    $endgroup$
    – kglr
    57 mins ago












  • $begingroup$
    @kglr Yes it works for that situation. It's amazing, thank you.
    $endgroup$
    – VoldikSS
    26 mins ago
















4












$begingroup$


I have a 4-channel image (RGBA). I want to reduce its channel count from 4 to 3.



The method I am using currently is to Right click and Save as a .png file. After that when I Import it in Mathematica, the channel count is reduced to 3. Is there a more elegant way to do that?



Note: RemoveAlphaChannel function won't work. Because that will change the appearance of the original image (see the example below).



This is a 4-channel picture from ref / AlphaChannel:



4-channel picture



 img = Import @ "https://i.stack.imgur.com/XvzDc.png"


This is the 3-channel picture which is what I want:



3-channel picture



If I use RemoveAlphaChannel, I will get this picture instead:



Picture after RemoveAlphaChannel










share|improve this question











$endgroup$








  • 3




    $begingroup$
    does RemoveAlphaChannel[img, White] not work for you? it does give 3-channel image ( ImageChannels@RemoveAlphaChannel[img, White] is 3).
    $endgroup$
    – kglr
    57 mins ago












  • $begingroup$
    @kglr Yes it works for that situation. It's amazing, thank you.
    $endgroup$
    – VoldikSS
    26 mins ago














4












4








4





$begingroup$


I have a 4-channel image (RGBA). I want to reduce its channel count from 4 to 3.



The method I am using currently is to Right click and Save as a .png file. After that when I Import it in Mathematica, the channel count is reduced to 3. Is there a more elegant way to do that?



Note: RemoveAlphaChannel function won't work. Because that will change the appearance of the original image (see the example below).



This is a 4-channel picture from ref / AlphaChannel:



4-channel picture



 img = Import @ "https://i.stack.imgur.com/XvzDc.png"


This is the 3-channel picture which is what I want:



3-channel picture



If I use RemoveAlphaChannel, I will get this picture instead:



Picture after RemoveAlphaChannel










share|improve this question











$endgroup$




I have a 4-channel image (RGBA). I want to reduce its channel count from 4 to 3.



The method I am using currently is to Right click and Save as a .png file. After that when I Import it in Mathematica, the channel count is reduced to 3. Is there a more elegant way to do that?



Note: RemoveAlphaChannel function won't work. Because that will change the appearance of the original image (see the example below).



This is a 4-channel picture from ref / AlphaChannel:



4-channel picture



 img = Import @ "https://i.stack.imgur.com/XvzDc.png"


This is the 3-channel picture which is what I want:



3-channel picture



If I use RemoveAlphaChannel, I will get this picture instead:



Picture after RemoveAlphaChannel







image-processing image






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 10 mins ago









Andreas Rejbrand

10314




10314










asked 1 hour ago









VoldikSSVoldikSS

306




306








  • 3




    $begingroup$
    does RemoveAlphaChannel[img, White] not work for you? it does give 3-channel image ( ImageChannels@RemoveAlphaChannel[img, White] is 3).
    $endgroup$
    – kglr
    57 mins ago












  • $begingroup$
    @kglr Yes it works for that situation. It's amazing, thank you.
    $endgroup$
    – VoldikSS
    26 mins ago














  • 3




    $begingroup$
    does RemoveAlphaChannel[img, White] not work for you? it does give 3-channel image ( ImageChannels@RemoveAlphaChannel[img, White] is 3).
    $endgroup$
    – kglr
    57 mins ago












  • $begingroup$
    @kglr Yes it works for that situation. It's amazing, thank you.
    $endgroup$
    – VoldikSS
    26 mins ago








3




3




$begingroup$
does RemoveAlphaChannel[img, White] not work for you? it does give 3-channel image ( ImageChannels@RemoveAlphaChannel[img, White] is 3).
$endgroup$
– kglr
57 mins ago






$begingroup$
does RemoveAlphaChannel[img, White] not work for you? it does give 3-channel image ( ImageChannels@RemoveAlphaChannel[img, White] is 3).
$endgroup$
– kglr
57 mins ago














$begingroup$
@kglr Yes it works for that situation. It's amazing, thank you.
$endgroup$
– VoldikSS
26 mins ago




$begingroup$
@kglr Yes it works for that situation. It's amazing, thank you.
$endgroup$
– VoldikSS
26 mins ago










1 Answer
1






active

oldest

votes


















5












$begingroup$

The second example from RemoveAlphaChannel:





  • Remove opacity by blending with a white background:






img2 = RemoveAlphaChannel[img, White]


enter image description here



ImageChannels /@ {img, img2}



{4, 3}




ColorSeparate /@ {img, img2} // Grid


enter image description here



Row[{Labeled[Framed@AlphaChannel@img, "img", Top], 
Labeled[Framed@AlphaChannel@img2, "img2", Top]}]


enter image description here






share|improve this answer











$endgroup$













  • $begingroup$
    Thank you very much @kglr. I wonder if RemoveAlphaChannel[#, White]& is universal. If it also works for various alpha channels. (I've tried some pictures with different alpha channels and it works, but I am still not sure whether it works for all the cases...)
    $endgroup$
    – VoldikSS
    29 mins ago












  • $begingroup$
    @VoldikSS, I am not sure if it works for all cases.
    $endgroup$
    – kglr
    19 mins ago











Your Answer





StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
});
});
}, "mathjax-editing");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "387"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f190158%2fhow-to-convert-a-4-channel-image-to-3-channel-image-in-an-elegant-way%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









5












$begingroup$

The second example from RemoveAlphaChannel:





  • Remove opacity by blending with a white background:






img2 = RemoveAlphaChannel[img, White]


enter image description here



ImageChannels /@ {img, img2}



{4, 3}




ColorSeparate /@ {img, img2} // Grid


enter image description here



Row[{Labeled[Framed@AlphaChannel@img, "img", Top], 
Labeled[Framed@AlphaChannel@img2, "img2", Top]}]


enter image description here






share|improve this answer











$endgroup$













  • $begingroup$
    Thank you very much @kglr. I wonder if RemoveAlphaChannel[#, White]& is universal. If it also works for various alpha channels. (I've tried some pictures with different alpha channels and it works, but I am still not sure whether it works for all the cases...)
    $endgroup$
    – VoldikSS
    29 mins ago












  • $begingroup$
    @VoldikSS, I am not sure if it works for all cases.
    $endgroup$
    – kglr
    19 mins ago
















5












$begingroup$

The second example from RemoveAlphaChannel:





  • Remove opacity by blending with a white background:






img2 = RemoveAlphaChannel[img, White]


enter image description here



ImageChannels /@ {img, img2}



{4, 3}




ColorSeparate /@ {img, img2} // Grid


enter image description here



Row[{Labeled[Framed@AlphaChannel@img, "img", Top], 
Labeled[Framed@AlphaChannel@img2, "img2", Top]}]


enter image description here






share|improve this answer











$endgroup$













  • $begingroup$
    Thank you very much @kglr. I wonder if RemoveAlphaChannel[#, White]& is universal. If it also works for various alpha channels. (I've tried some pictures with different alpha channels and it works, but I am still not sure whether it works for all the cases...)
    $endgroup$
    – VoldikSS
    29 mins ago












  • $begingroup$
    @VoldikSS, I am not sure if it works for all cases.
    $endgroup$
    – kglr
    19 mins ago














5












5








5





$begingroup$

The second example from RemoveAlphaChannel:





  • Remove opacity by blending with a white background:






img2 = RemoveAlphaChannel[img, White]


enter image description here



ImageChannels /@ {img, img2}



{4, 3}




ColorSeparate /@ {img, img2} // Grid


enter image description here



Row[{Labeled[Framed@AlphaChannel@img, "img", Top], 
Labeled[Framed@AlphaChannel@img2, "img2", Top]}]


enter image description here






share|improve this answer











$endgroup$



The second example from RemoveAlphaChannel:





  • Remove opacity by blending with a white background:






img2 = RemoveAlphaChannel[img, White]


enter image description here



ImageChannels /@ {img, img2}



{4, 3}




ColorSeparate /@ {img, img2} // Grid


enter image description here



Row[{Labeled[Framed@AlphaChannel@img, "img", Top], 
Labeled[Framed@AlphaChannel@img2, "img2", Top]}]


enter image description here







share|improve this answer














share|improve this answer



share|improve this answer








edited 38 mins ago

























answered 47 mins ago









kglrkglr

180k9200413




180k9200413












  • $begingroup$
    Thank you very much @kglr. I wonder if RemoveAlphaChannel[#, White]& is universal. If it also works for various alpha channels. (I've tried some pictures with different alpha channels and it works, but I am still not sure whether it works for all the cases...)
    $endgroup$
    – VoldikSS
    29 mins ago












  • $begingroup$
    @VoldikSS, I am not sure if it works for all cases.
    $endgroup$
    – kglr
    19 mins ago


















  • $begingroup$
    Thank you very much @kglr. I wonder if RemoveAlphaChannel[#, White]& is universal. If it also works for various alpha channels. (I've tried some pictures with different alpha channels and it works, but I am still not sure whether it works for all the cases...)
    $endgroup$
    – VoldikSS
    29 mins ago












  • $begingroup$
    @VoldikSS, I am not sure if it works for all cases.
    $endgroup$
    – kglr
    19 mins ago
















$begingroup$
Thank you very much @kglr. I wonder if RemoveAlphaChannel[#, White]& is universal. If it also works for various alpha channels. (I've tried some pictures with different alpha channels and it works, but I am still not sure whether it works for all the cases...)
$endgroup$
– VoldikSS
29 mins ago






$begingroup$
Thank you very much @kglr. I wonder if RemoveAlphaChannel[#, White]& is universal. If it also works for various alpha channels. (I've tried some pictures with different alpha channels and it works, but I am still not sure whether it works for all the cases...)
$endgroup$
– VoldikSS
29 mins ago














$begingroup$
@VoldikSS, I am not sure if it works for all cases.
$endgroup$
– kglr
19 mins ago




$begingroup$
@VoldikSS, I am not sure if it works for all cases.
$endgroup$
– kglr
19 mins ago


















draft saved

draft discarded




















































Thanks for contributing an answer to Mathematica Stack Exchange!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


Use MathJax to format equations. MathJax reference.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f190158%2fhow-to-convert-a-4-channel-image-to-3-channel-image-in-an-elegant-way%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

SQL Server 17 - Attemping to backup to remote NAS but Access is denied

Always On Availability groups resolving state after failover - Remote harden of transaction...

Restoring from pg_dump with foreign key constraints