package leadtools.demos;
import leadtools.LeadStreamFactory;
import leadtools.RasterImage;
import leadtools.RasterImageFormat;
import leadtools.codecs.CodecsSavePageMode;
import leadtools.codecs.RasterCodecs;
import leadtools.demos.SaveFormatDialog.OnSaveFormat;
import android.content.Context;
public class ImageFileSaver implements OnSaveFormat, SaveFileDialog.OnFileSelectedListener {
private RasterCodecs mCodecs;
private RasterImage mImage;
private RasterImageFormat mFormat;
private int mBitsPerPixel;
private SaveFormatDialog mImageFormatDlg;
private SaveFileDialog mSaveFileDlg;
public ImageFileSaver(Context context) {
mCodecs = new RasterCodecs(Utils.getSharedLibsPath(context));
mImageFormatDlg = new SaveFormatDialog(context, mCodecs, this);
mSaveFileDlg = new SaveFileDialog(context, Utils.getSupportedImagesFormatFilter(), this);
}
public void save(RasterImage image) {
mImage = image;
mImageFormatDlg.show();
}
public void onSaveFormat(RasterCodecs codecs, RasterImageFormat format, int bitsPerPixel) {
mCodecs = codecs;
mFormat = format;
mBitsPerPixel = bitsPerPixel;
mSaveFileDlg.show();
}
public void onFileSelected(String fileName) {
try {
String extension = getExtension(mFormat);
if(!fileName.endsWith(extension))
fileName += extension;
mCodecs.save(mImage, LeadStreamFactory.create(fileName), mFormat, mBitsPerPixel, 1, -1, 1, CodecsSavePageMode.APPEND);
}
catch (Exception ex) {
Messager.showError(mSaveFileDlg.getContext(), ex.getMessage(), "Error saving file");
}
}
private String getExtension(RasterImageFormat format) {
String strExt = "";
switch (format) {
case CMP:
strExt = ".cmp";
break;
case JPEG:
case JPEG_411:
case JPEG_422:
case JPEG_LAB:
case JPEG_LAB_411:
case JPEG_LAB_422:
case JPEG_RGB:
strExt = ".jpg";
break;
case RAS_PDF:
case RAS_PDF_JPEG:
case RAS_PDF_JPEG_411:
case RAS_PDF_JPEG_422:
case RAS_PDF_G3_1DIM:
case RAS_PDF_G3_2DIM:
case RAS_PDF_G4:
strExt = ".pdf";
break;
case FAX_G3_1DIM:
case FAX_G3_1DIM_NOEOL:
case FAX_G3_2DIM:
case FAX_G4:
strExt = ".fax";
break;
case TIF:
case TIF_CMP:
case TIF_CMYK:
case TIF_J2K:
case TIF_JBIG:
case TIF_JBIG2:
case TIF_JPEG:
case TIF_JPEG_411:
case TIF_JPEG_422:
case TIFLZW:
case TIFLZW_CMYK:
case TIFLZW_YCC:
case TIF_PACKBITS:
case TIF_PACKBITS_CMYK:
case TIF_PACKBITS_YCC:
case CCITT:
case CCITT_GROUP3_1DIM:
case CCITT_GROUP3_2DIM:
case CCITT_GROUP4:
case TIF_YCC:
case GEO_TIFF:
strExt = ".tif";
break;
case EXIF:
case EXIF_JPEG_411:
case EXIF_JPEG_422:
case EXIF_YCC:
strExt = ".jpg";
break;
case GIF:
strExt = ".gif";
break;
case J2K:
strExt = ".j2k";
break;
case JP2:
strExt = ".jp2";
break;
case JBIG:
strExt = ".jbg";
break;
case JBIG2:
strExt = ".jb2";
break;
case BMP:
case BMP_RLE:
case OS2:
case OS2_2:
strExt = ".bmp";
break;
case JXR:
case JXR_420:
case JXR_422:
case JXR_GRAY:
strExt = ".jxr";
break;
case JLS:
case JLS_LINE:
case JLS_SAMPLE:
strExt = ".jls";
break;
case PNG:
strExt = ".png";
break;
case PSD:
strExt = ".psd";
break;
default:
strExt = "";
break;
}
return strExt;
}
}