今天下载彩色版的书后发现全部都是图片,而且两页都在同一面,浏览的时候太麻烦了,虽然有黑白的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();
}
}
}
}
成功对半劈开。
方便阅读。有书还是买书吧。
不尝试解决问题的程序员不是好的开发者。