您的位置:首页 > 编程语言

生活编程(二) 图像裁剪批处理

2014-03-25 23:04 260 查看
今天下载彩色版的书后发现全部都是图片,而且两页都在同一面,浏览的时候太麻烦了,虽然有黑白的pdf(歪歪斜斜),最后用编程解决问题。尊重版权,请买正版书(这本书太老了)。



(好久没写博客,发现csdn改进了图片插入的功能。大小显示及位置调整。)
发现个规律,图片中间刚好是书的中间,那么只要把图片切成两半即可。用Matlab即可实现。

function x = diy()
filelist = dir('*.jpg');  
filenumber = length(filelist);  
j = 1;
for i = 1:filenumber
    imagename = filelist(i).name;  
    temp = imread(imagename);  
    %name = strrep(imagename,'.jpg','');
    temp = imresize(temp,[1200,1550]);  
    [ihight,ilength] = size(temp);
    %对RGB三层进行处理
    for k = 1:3
        first = temp(:,:,k);
        imagea = first(1:ihight,1:round(ilength/6));
        imageb = first(1:ihight,round(ilength/6):ilength/3);
        left(:,:,k)  = imagea;  
        right(:,:,k) = imageb;  
    end
    imwrite(left,[num2str(j) '.jpg']);
    %j递增  用于命名
   j = j + 1;

   %数字转字符  不是 char() 是num2str() 字符串拼接为[a b]   
   num2str imwrite(right,[num2str(j),'.jpg']);
    j = j + 1;
    
end

剪切后的文件名命名为 从1开始递增。但是与之前这些的文件混在一起,用个正则表达式简单过删掉原始文件即可。




import java.io.File;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author iaiti
 * use regex to delete some files 
 */
public class FilterFile {

    public static void main(String[] args) {
        String path = "F:/kai";
        File myfile = new File(path);
        for(File filein : myfile.listFiles()){
            Pattern pattern = Pattern.compile("[0-9]*.jpg");
            Matcher matcher = pattern.matcher(filein.getName());
            System.out.println(filein.getName()+" file match number name is "+matcher.matches());
            if(matcher.matches() == false){
                filein.delete();
            } 
        }
    }
}

成功对半劈开。



方便阅读。有书还是买书吧。

不尝试解决问题的程序员不是好的开发者。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: