You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by da...@apache.org on 2012/02/04 14:50:39 UTC
svn commit: r1240502 - in
/commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/jpeg:
JpegImageParser.java exif/ExifRewriter.java segments/App2Segment.java
xmp/JpegXmpRewriter.java
Author: damjan
Date: Sat Feb 4 13:50:39 2012
New Revision: 1240502
URL: http://svn.apache.org/viewvc?rev=1240502&view=rev
Log:
Added generic collections for all JPEG classes.
Modified:
commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/jpeg/JpegImageParser.java
commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/jpeg/exif/ExifRewriter.java
commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/jpeg/segments/App2Segment.java
commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/jpeg/xmp/JpegXmpRewriter.java
Modified: commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/jpeg/JpegImageParser.java
URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/jpeg/JpegImageParser.java?rev=1240502&r1=1240501&r2=1240502&view=diff
==============================================================================
--- commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/jpeg/JpegImageParser.java (original)
+++ commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/jpeg/JpegImageParser.java Sat Feb 4 13:50:39 2012
@@ -110,11 +110,11 @@ public class JpegImageParser extends Ima
return false;
}
- public List readSegments(ByteSource byteSource, final int markers[],
+ public List<Segment> readSegments(ByteSource byteSource, final int markers[],
final boolean returnAfterFirst, boolean readEverything)
throws ImageReadException, IOException
{
- final List result = new ArrayList();
+ final List<Segment> result = new ArrayList<Segment>();
final JpegImageParser parser = this;
final int[] sofnSegments = {
// kJFIFMarker,
@@ -193,7 +193,7 @@ public class JpegImageParser extends Ima
public static final boolean permissive = true;
- private byte[] assembleSegments(List v) throws ImageReadException
+ private byte[] assembleSegments(List<App2Segment> v) throws ImageReadException
{
try
{
@@ -204,13 +204,13 @@ public class JpegImageParser extends Ima
}
}
- private byte[] assembleSegments(List v, boolean start_with_zero)
+ private byte[] assembleSegments(List<App2Segment> v, boolean start_with_zero)
throws ImageReadException
{
if (v.size() < 1)
throw new ImageReadException("No App2 Segments Found.");
- int markerCount = ((App2Segment) v.get(0)).num_markers;
+ int markerCount = v.get(0).num_markers;
// if (permissive && (markerCount == 0))
// markerCount = v.size();
@@ -264,7 +264,7 @@ public class JpegImageParser extends Ima
return result;
}
- private void dumpSegments(List v)
+ private void dumpSegments(List<? extends Segment> v)
{
Debug.debug();
Debug.debug("dumpSegments", v.size());
@@ -279,7 +279,7 @@ public class JpegImageParser extends Ima
Debug.debug();
}
- public List readSegments(ByteSource byteSource, int markers[],
+ public List<Segment> readSegments(ByteSource byteSource, int markers[],
boolean returnAfterFirst) throws ImageReadException, IOException
{
return readSegments(byteSource, markers, returnAfterFirst, false);
@@ -288,26 +288,25 @@ public class JpegImageParser extends Ima
public byte[] getICCProfileBytes(ByteSource byteSource, Map params)
throws ImageReadException, IOException
{
- List segments = readSegments(byteSource,
+ List<Segment> segments = readSegments(byteSource,
new int[] { JPEG_APP2_Marker, }, false);
+ List<App2Segment> filtered = new ArrayList<App2Segment>();
if (segments != null)
{
// throw away non-icc profile app2 segments.
- List filtered = new ArrayList();
for (int i = 0; i < segments.size(); i++)
{
App2Segment segment = (App2Segment) segments.get(i);
if (segment.icc_bytes != null)
filtered.add(segment);
}
- segments = filtered;
}
- if ((segments == null) || (segments.size() < 1))
+ if ((filtered == null) || (filtered.size() < 1))
return null;
- byte bytes[] = assembleSegments(segments);
+ byte bytes[] = assembleSegments(filtered);
if (debug)
System.out.println("bytes" + ": "
@@ -340,9 +339,9 @@ public class JpegImageParser extends Ima
return byteArrayHasPrefix(segment.bytes, EXIF_IDENTIFIER_CODE);
}
- private List filterAPP1Segments(List v)
+ private List<Segment> filterAPP1Segments(List<Segment> v)
{
- List result = new ArrayList();
+ List<Segment> result = new ArrayList<Segment>();
for (int i = 0; i < v.size(); i++)
{
@@ -354,22 +353,6 @@ public class JpegImageParser extends Ima
return result;
}
- // TODO unused
- private List filterSegments(List v, List markers)
- {
- List result = new ArrayList();
-
- for (int i = 0; i < v.size(); i++)
- {
- Segment segment = (Segment) v.get(i);
- Integer marker = new Integer(segment.marker);
- if (markers.contains(marker))
- result.add(segment);
- }
-
- return result;
- }
-
public TiffImageMetadata getExifMetadata(ByteSource byteSource, Map params)
throws ImageReadException, IOException
{
@@ -389,13 +372,13 @@ public class JpegImageParser extends Ima
public byte[] getExifRawData(ByteSource byteSource)
throws ImageReadException, IOException
{
- List segments = readSegments(byteSource,
+ List<Segment> segments = readSegments(byteSource,
new int[] { JPEG_APP1_Marker, }, false);
if ((segments == null) || (segments.size() < 1))
return null;
- List exifSegments = filterAPP1Segments(segments);
+ List<Segment> exifSegments = filterAPP1Segments(segments);
if (debug)
System.out.println("exif_segments.size" + ": "
+ exifSegments.size());
@@ -563,7 +546,7 @@ public class JpegImageParser extends Ima
throws ImageReadException, IOException
{
- final List result = new ArrayList();
+ final List<String> result = new ArrayList<String>();
JpegUtils.Visitor visitor = new JpegUtils.Visitor() {
// return false to exit before reading image data.
@@ -605,13 +588,13 @@ public class JpegImageParser extends Ima
if (result.size() > 1)
throw new ImageReadException(
"Jpeg file contains more than one XMP segment.");
- return (String) result.get(0);
+ return result.get(0);
}
public JpegPhotoshopMetadata getPhotoshopMetadata(ByteSource byteSource,
Map params) throws ImageReadException, IOException
{
- List segments = readSegments(byteSource,
+ List<Segment> segments = readSegments(byteSource,
new int[] { JPEG_APP13_Marker, }, false);
if ((segments == null) || (segments.size() < 1))
@@ -639,7 +622,7 @@ public class JpegImageParser extends Ima
public Dimension getImageSize(ByteSource byteSource, Map params)
throws ImageReadException, IOException
{
- List segments = readSegments(byteSource, new int[] {
+ List<Segment> segments = readSegments(byteSource, new int[] {
// kJFIFMarker,
SOF0Marker,
@@ -675,7 +658,7 @@ public class JpegImageParser extends Ima
{
// List allSegments = readSegments(byteSource, null, false);
- List SOF_segments = readSegments(byteSource, new int[] {
+ List<Segment> SOF_segments = readSegments(byteSource, new int[] {
// kJFIFMarker,
SOF0Marker, SOF1Marker, SOF2Marker, SOF3Marker, SOF5Marker,
@@ -691,7 +674,7 @@ public class JpegImageParser extends Ima
// System.out.println("Incoherent SOFN Data Found: "
// + SOF_segments.size());
- List jfifSegments = readSegments(byteSource,
+ List<Segment> jfifSegments = readSegments(byteSource,
new int[] { JFIFMarker, }, true);
SofnSegment fSOFNSegment = (SofnSegment) SOF_segments.get(0);
@@ -805,8 +788,8 @@ public class JpegImageParser extends Ima
PhysicalHeightInch = (float) (Height / (y_density * units_per_inch));
}
- List Comments = new ArrayList();
- List commentSegments = readSegments(byteSource,
+ List<String> Comments = new ArrayList<String>();
+ List<Segment> commentSegments = readSegments(byteSource,
new int[] { COMMarker }, false);
for (int i = 0; i < commentSegments.size(); i++)
{
@@ -1039,7 +1022,7 @@ public class JpegImageParser extends Ima
pw.println("");
{
- List segments = readSegments(byteSource, null, false);
+ List<Segment> segments = readSegments(byteSource, null, false);
if (segments == null)
throw new ImageReadException("No Segments Found.");
Modified: commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/jpeg/exif/ExifRewriter.java
URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/jpeg/exif/ExifRewriter.java?rev=1240502&r1=1240501&r2=1240502&view=diff
==============================================================================
--- commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/jpeg/exif/ExifRewriter.java (original)
+++ commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/jpeg/exif/ExifRewriter.java Sat Feb 4 13:50:39 2012
@@ -33,6 +33,7 @@ import org.apache.commons.sanselan.commo
import org.apache.commons.sanselan.common.bytesource.ByteSourceInputStream;
import org.apache.commons.sanselan.formats.jpeg.JpegConstants;
import org.apache.commons.sanselan.formats.jpeg.JpegUtils;
+import org.apache.commons.sanselan.formats.jpeg.segments.JfifSegment;
import org.apache.commons.sanselan.formats.tiff.write.TiffImageWriterBase;
import org.apache.commons.sanselan.formats.tiff.write.TiffImageWriterLossless;
import org.apache.commons.sanselan.formats.tiff.write.TiffImageWriterLossy;
@@ -71,10 +72,10 @@ public class ExifRewriter extends Binary
private static class JFIFPieces
{
- public final List pieces;
- public final List exifPieces;
+ public final List<JFIFPiece> pieces;
+ public final List<JFIFPiece> exifPieces;
- public JFIFPieces(final List pieces, final List exifPieces)
+ public JFIFPieces(final List<JFIFPiece> pieces, final List<JFIFPiece> exifPieces)
{
this.pieces = pieces;
this.exifPieces = exifPieces;
@@ -145,8 +146,8 @@ public class ExifRewriter extends Binary
throws ImageReadException, IOException
// , ImageWriteException
{
- final List pieces = new ArrayList();
- final List exifPieces = new ArrayList();
+ final List<JFIFPiece> pieces = new ArrayList<JFIFPiece>();
+ final List<JFIFPiece> exifPieces = new ArrayList<JFIFPiece>();
JpegUtils.Visitor visitor = new JpegUtils.Visitor()
{
@@ -266,7 +267,7 @@ public class ExifRewriter extends Binary
throws ImageReadException, IOException, ImageWriteException
{
JFIFPieces jfifPieces = analyzeJFIF(byteSource);
- List pieces = jfifPieces.pieces;
+ List<JFIFPiece> pieces = jfifPieces.pieces;
// Debug.debug("pieces", pieces);
@@ -359,7 +360,7 @@ public class ExifRewriter extends Binary
{
// List outputDirectories = outputSet.getDirectories();
JFIFPieces jfifPieces = analyzeJFIF(byteSource);
- List pieces = jfifPieces.pieces;
+ List<JFIFPiece> pieces = jfifPieces.pieces;
TiffImageWriterBase writer;
// Just use first APP1 segment for now.
@@ -453,7 +454,7 @@ public class ExifRewriter extends Binary
ImageWriteException
{
JFIFPieces jfifPieces = analyzeJFIF(byteSource);
- List pieces = jfifPieces.pieces;
+ List<JFIFPiece> pieces = jfifPieces.pieces;
TiffImageWriterBase writer = new TiffImageWriterLossy(
outputSet.byteOrder);
@@ -464,7 +465,7 @@ public class ExifRewriter extends Binary
writeSegmentsReplacingExif(os, pieces, newBytes);
}
- private void writeSegmentsReplacingExif(OutputStream os, List segments,
+ private void writeSegmentsReplacingExif(OutputStream os, List<JFIFPiece> segments,
byte newBytes[]) throws ImageWriteException, IOException
{
int byteOrder = getByteOrder();
Modified: commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/jpeg/segments/App2Segment.java
URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/jpeg/segments/App2Segment.java?rev=1240502&r1=1240501&r2=1240502&view=diff
==============================================================================
--- commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/jpeg/segments/App2Segment.java (original)
+++ commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/jpeg/segments/App2Segment.java Sat Feb 4 13:50:39 2012
@@ -23,7 +23,7 @@ import java.io.InputStream;
import org.apache.commons.sanselan.ImageReadException;
import org.apache.commons.sanselan.formats.jpeg.JpegImageParser;
-public class App2Segment extends AppnSegment implements Comparable
+public class App2Segment extends AppnSegment implements Comparable<App2Segment>
{
public final byte icc_bytes[];
public final int cur_marker, num_markers;
@@ -64,9 +64,8 @@ public class App2Segment extends AppnSeg
}
}
- public int compareTo(Object o)
+ public int compareTo(App2Segment other)
{
- App2Segment other = (App2Segment) o;
return cur_marker - other.cur_marker;
}
Modified: commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/jpeg/xmp/JpegXmpRewriter.java
URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/jpeg/xmp/JpegXmpRewriter.java?rev=1240502&r1=1240501&r2=1240502&view=diff
==============================================================================
--- commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/jpeg/xmp/JpegXmpRewriter.java (original)
+++ commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/jpeg/xmp/JpegXmpRewriter.java Sat Feb 4 13:50:39 2012
@@ -110,7 +110,7 @@ public class JpegXmpRewriter extends Jpe
throws ImageReadException, IOException
{
JFIFPieces jfifPieces = analyzeJFIF(byteSource);
- List pieces = jfifPieces.pieces;
+ List<JFIFPiece> pieces = jfifPieces.pieces;
pieces = removeXmpSegments(pieces);
writeSegments(os, pieces);
}
@@ -185,10 +185,10 @@ public class JpegXmpRewriter extends Jpe
ImageWriteException
{
JFIFPieces jfifPieces = analyzeJFIF(byteSource);
- List pieces = jfifPieces.pieces;
+ List<JFIFPiece> pieces = jfifPieces.pieces;
pieces = removeXmpSegments(pieces);
- List newPieces = new ArrayList();
+ List<JFIFPieceSegment> newPieces = new ArrayList<JFIFPieceSegment>();
byte xmpXmlBytes[] = xmpXml.getBytes("utf-8");
int index = 0;
while (index < xmpXmlBytes.length)