【個人メモ】画像ファイルの白い部分を透過させる


初めに

発表スライドに使おうと思った画像が透過しないもので,かっこ悪かったので白い部分を透過させたい.

やり方

白はRGB値が(255,255,255).
画像を読み込んで,RGB値が(255,255,255)のピクセルに対して透過度が0になるようにしてあげて,最後に透過度のデータを含んだ形で保存してあげる.

white2transparency.m
% read imagefile
[file,path] = uigetfile('*.*');
filepath = sprintf('%s/%s',string(path),string(file));
image = imread(filepath);

% add alpha info
[L M N] = size(image);
Alpha = ones(L,M);

for i=1:L
    for j=1:M
        if image(i,j,:) == [255 255 255] % RGB value
            Alpha(i,j) = 0;
        end
    end
end

% savefile
filter = {'*.png';'*.*'};
[file2, path2] = uiputfile(filter);
imwrite(image,string(file2),'Alpha',Alpha);

RGBの値を任意の色に変えれば他の色を透過させることもできる.

ファイルはファイル選択ダイアログから選択できるようにしてある.

RGB値で選択しているので,複雑な形状であってもきれいにくりぬけるのが良いですね.

同じことができるアプリはたくさんありそうですが,こうした簡単な加工は自分でできるようになりたいと思っています.