The colour of a pixel is stored as numbers. A profile tells readers what those numbers mean (how the colours are encoded), so all devices should display an image in the same way. When there is no embedded profile, most readers assume the profile is sRGB.
Assigning a profile means the metadata is changed, declaring that a certain profile should be used. Pixel numbers not changed.
Converting the profile of an image changes pixel numbers, so that the colour of pixels don't change, but the way they are encoded does change. This also changes the metadata, of course.
IM can assign or convert, or both.
These
assign:
Code: Select all
convert in.ext -set profile newprofile.icc out.exe
convert in.ext +profile "*" -profile newprofile.icc out.exe [This first removes any profiles, then assigns one.]
If in.exe has no embedded profile, this also assigns:
Code: Select all
convert in.ext -profile newprofile.icc out.exe
To
convert from embedded profile to a new profile:
Code: Select all
convert in.ext -profile newprofile.icc out.exe
To
convert, when the file may or may not have an embedded profile, to a new profile:
Code: Select all
convert in.ext -profile oldprofile.icc -profile newprofile.icc out.exe
Explanation: if there is no profile, oldprofile is assigned. If there is already an embedded profile, the image is first converted to oldprofile, then to newprofile.