You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Joakim Knudsen (JIRA)" <ji...@apache.org> on 2017/11/30 20:40:00 UTC

[jira] [Created] (IMAGING-208) Android version of Commons Imaging

Joakim Knudsen created IMAGING-208:
--------------------------------------

             Summary: Android version of Commons Imaging
                 Key: IMAGING-208
                 URL: https://issues.apache.org/jira/browse/IMAGING-208
             Project: Commons Imaging
          Issue Type: New Feature
            Reporter: Joakim Knudsen
            Priority: Minor


Effort has been made with Sanselan, to make an [Android compatible version of the library (Sanselan-Android)|https://github.com/fulcrumapp/sanselan-android]. Running the library as-is (either Sanselan 0.97 or Commons Imaging) on Android produces warnings and errors due to the lack of support of java.awt.

Exploring the code, comparing with the original Sanselan code (and Commons Imaging), I find that Sanselan-Android essentially comments out all references (imports etc) to {{java.awt.*}} -- typically {{java.awt.Dimension}}, {{java.awt.BufferedImage}}, and {{java.awt.color.ICC_ColorSpace}}.

As such, Sanselan-Android only supports JPEG and TIFF (snip from {{ImageParser.java}}):
{code:java}
package org.apache.sanselan;

//import java.awt.Dimension;
//import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Map;

import org.apache.sanselan.common.BinaryFileParser;
import org.apache.sanselan.common.IImageMetadata;
import org.apache.sanselan.common.byteSources.ByteSource;
import org.apache.sanselan.common.byteSources.ByteSourceArray;
import org.apache.sanselan.common.byteSources.ByteSourceFile;
//import org.apache.sanselan.formats.bmp.BmpImageParser;
//import org.apache.sanselan.formats.gif.GifImageParser;
//import org.apache.sanselan.formats.ico.IcoImageParser;
import org.apache.sanselan.formats.jpeg.JpegImageParser;
//import org.apache.sanselan.formats.png.PngImageParser;
//import org.apache.sanselan.formats.pnm.PNMImageParser;
//import org.apache.sanselan.formats.psd.PsdImageParser;
import org.apache.sanselan.formats.tiff.TiffImageParser;

public abstract class ImageParser extends BinaryFileParser implements
		SanselanConstants
{

	public static final ImageParser[] getAllImageParsers()
	{
		ImageParser result[] = { new JpegImageParser(), new TiffImageParser(),
//				new PngImageParser() 
//				new BmpImageParser(),
//				new GifImageParser(), new PsdImageParser(),
//				new PNMImageParser(), new IcoImageParser(),
		// new JBig2ImageParser(),
		// new TgaImageParser(),
		};

		return result;
	}
{code}

*It has been proposed to make an Android compatible version of Commons Imaging, and I'd like to propose this work to be started :) I'd also like to contribute as much as I can, but I'm not confident enough to be the main resource in such a task.*

It seems to me that simply commenting out all references and usage of, say, {{java.awt.Dimension}} is a unneccesarily crude fix, as this class appears to me to be a simple (?) wrapper class of two dimensions (height and width)? Why not replace this with something compatible with Android, and thus preserve functionality? [This StackOverflow post|https://stackoverflow.com/questions/8876130/class-dimension-for-java-on-android] discusses writing an equivalent class, or, alternatively, using [{{Point}}|https://developer.android.com/reference/android/graphics/Point.html].



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)