Matlab替换PNG图片透明背景为白色(先删除Alpha通道)

png图片在有Alpha通道的情况下读入matlab可能整个图片都会变黑

在这里插入图片描述
这时即使用Matlab的imwrite将其转换为jpg格式也仍会出现上图的现象,最快捷的方法是删除png图片的Alpha通道,通过pngcrush工具可以实现;
另一种可行的方法是:

  1. 利用图片工厂批量转换png图片为png格式,这种方法同样可以去掉透明背景,但是图片工厂的算法会将透明背景随机填充一种除图片中所含颜色外的一种颜色,颜色取值按uint8格式从小到大取(0为绿色);
    在这里插入图片描述
  2. 将所有转换后的图片读入Matlab(或任一种编程语言),把随机填充的背景颜色全部替换为白色(255,255,255);
    在这里插入图片描述
  3. 用imwrite写入到原路径覆盖原图像;
    实现代码如下:
% 本程序将 png 图片转换为 jpg 图片   
    clc,clear
    s = [ "Jeep", "MINI" ];
    for m = 1:length(s)
    pngs = dir('G:\AutoLogosCopy\'+ s(m) + '\*_*.png');  
    num_pngs = length( pngs );  
    for i = 1 : num_pngs
       png_file = fullfile( 'G:\AutoLogosCopy\', s(m), pngs(i).name );  
       png  = imread( png_file);
       % 读取像素(1, 1)的颜色值
       jpg1 = png(1, 1, 1);
       jpg2 = png(1, 1, 2);
       jpg3 = png(1, 1, 3);
       [M, N, L] = size(png);
       % 将所有颜色值与(1, 1)相同的像素点替换为白色
       for j = 1 : M
           for k = 1 : N
               if(png(j, k, 1) == jpg1 && png(j, k, 2) == jpg2 && png(j, k, 3) == jpg3)
                   png(j, k, 1) = 255;
                   png(j, k, 2) = 255;
                   png(j, k, 3) = 255;
               end
           end
       end
       %%% 将 png_file 转换为 jpg 格式图片,并保存. %%%  
       % 第一步,解析文件名 png_file ,注意,png_file 包括路径+文件名+后缀,如 png_file = 'G:\AutoLogosCopy\Jeep\test.png'  
       % path = G:\AutoLogosCopy\Jeep\'  name = 'test' ext = '.png'  
       % [ path , name , ext ] = fileparts( png_file ) ;  
       % 第二步,生成新的文件名  
       % filename = strcat( name , '.jpg' );  
       % 第三步,生成文件全称
       % jpg_file = fullfile( 'G:\AutoLogosCopy\MINI\' , filename ) ;  
       % 第四步,将 png 以 jpg_file 作为文件名,保存为 jpg 格式.  
      imwrite( png , png_file );
    end
    end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

banjitino

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值