/** * 出力用全フィルタ */ package jp.crwdev.app.imagefilter; import java.awt.image.BufferedImage; import java.util.ArrayList; import java.util.List; import jp.crwdev.app.interfaces.IImageFilter; import jp.crwdev.app.setting.ImageFilterParamSet; public class OutputImageFilter implements IImageFilter { /** フィルタリスト */ protected List<IImageFilter> mFilters = new ArrayList<IImageFilter>(); /** フィルタパラメータ */ protected ImageFilterParamSet mBaseFilterParams = new ImageFilterParamSet(); /** * コンストラクタ */ public OutputImageFilter(boolean fixedSize){ mFilters.add(new AddSpaceFilter()); mFilters.add(new TransRotateFilter()); mFilters.add(new SplitFilter()); mFilters.add(new CropFilter(true)); // 全ページCrop mFilters.add(new PageCheckFilter(true)); mFilters.add(new CropFilter(false)); // Text/Pictページ別Crop mFilters.add(new ContrastFilter()); mFilters.add(new GammaFilter()); mFilters.add(new AutoCropFilter()); mFilters.add(new GrayscaleFilter()); mFilters.add(new BlurFilter(true)); mFilters.add(new ResizeFilter()); mFilters.add(new BlurFilter(false)); //mFilters.add(new FixedCropFilter()); mFilters.add(new FixedSizeFilter(fixedSize)); //mFilters.add(new SpecificSizeFilter(600,800)); } /** * コンストラクタ * @param param */ public OutputImageFilter(ImageFilterParamSet params, boolean fixedSize){ this(fixedSize); mBaseFilterParams = params.clone(); } /** * フィルタパラメータを設定する * @param param */ public void setImageFilterParam(ImageFilterParamSet params){ mBaseFilterParams = params.clone(); } /** * フィルタパラメータを取得する * @return */ public ImageFilterParamSet getImageFilterParam(){ return mBaseFilterParams; } /** * フィルタリストを取得する * @return */ protected List<IImageFilter> getImageFilters(){ return mFilters; } @Override public BufferedImage filter(BufferedImage image, ImageFilterParam param) { ImageFilterParam newParam = mBaseFilterParams.createMergedFilterParam(param); for(IImageFilter filter : mFilters){ image = filter.filter(image, newParam); } return image; } }