[ 
https://issues.apache.org/jira/browse/SANSELAN-12?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Damjan Jovanovic resolved SANSELAN-12.
--------------------------------------

    Resolution: Fixed

Fixed by commit 1212318, resolving fixed.

                
> Writing an ascii TiffOutputField from a TiffConstant  tag type fails - fix 
> included with report
> -----------------------------------------------------------------------------------------------
>
>                 Key: SANSELAN-12
>                 URL: https://issues.apache.org/jira/browse/SANSELAN-12
>             Project: Commons Sanselan
>          Issue Type: Bug
>    Affects Versions: 0.94-incubator
>         Environment: FC8, java 6
>            Reporter: john schneider
>
> /**
> Hi - I was trying to write ascii field types when I ran across this.
> I was trying to add an TiffConstant TiffConstants.EXIF_TAG_DATE_TIME_ORIGINAL
> with a value like "2003:10:31 15:44:19", but the current code was not doing 
> it...
> After taking a dive into the code I noticed two issues:
> 1. the code was assuming all ascii values were represented by:
>        tagInfo.dataTypes == FIELD_TYPE_DESCRIPTION_ASCII
>    which is not the case. TiffConstants types that have ascii values are 
> represented
>        tagInfo.dataTypes[0] == FIELD_TYPE_ASCII
> 2. the code was assuming that an ascii  TiffOutputField had length of 1
> I think that the first problem is caused by the use of an anonymous array 
> wrapper
> around FIELD_TYPE_DESCRIPTION_ASCII, rather than a globally identifiable 
> instace
> like FIELD_TYPE_DESCRIPTION_ASCII. Not being sure of what your design 
> objectives
> are I took the most prudent path to getting the code to function correctly, 
> but
> this fix does assume that the ascii TiffConstants all work the same way.
> Please see comments in code. 
> Feel free to contact me with questions at jot...@gmail.com
> */
> Modified 
> src/main/java/org/apache/sanselan/formats/tiff/write/TiffOutputField.java
> public static TiffOutputField create(TagInfo tagInfo, int byteOrder,
>                                      String value) throws ImageWriteException
> {
>     FieldType fieldType;
>     if (tagInfo.dataTypes == null)
>         fieldType = FIELD_TYPE_ASCII;
>     else if (tagInfo.dataTypes == FIELD_TYPE_DESCRIPTION_ASCII ||
>              // added a second test here to look for dataTypes[] array
>              // I looked at code examples in lib and saw only a single 
>              // entry in most on only a single entry when a string fieldtype
>              // was being added. Big assumption I have no way of validating...
>              tagInfo.dataTypes[0] == FIELD_TYPE_ASCII)
>         fieldType = FIELD_TYPE_ASCII;
>     else
>         throw new ImageWriteException("Tag has unexpected data type.");
>     byte bytes[] = fieldType.writeData(value, byteOrder);
>     // the count "1" in the original code (see commented out original)
>     // is  wrong as it assumes the field being updated is a single ascii char
>     //return new TiffOutputField(tagInfo.tag, tagInfo, fieldType, 1, bytes);
>     return new TiffOutputField(tagInfo.tag, tagInfo, fieldType, 
> value.length(), bytes);
> }
> Changed from a check out I did a couple weeks ago
> public static TiffOutputField create(TagInfo tagInfo, int byteOrder,
>                                      String value) throws ImageWriteException
> {
>     FieldType fieldType;
>     if (tagInfo.dataTypes == null)
>         fieldType = FIELD_TYPE_ASCII;
>     else if (tagInfo.dataTypes == FIELD_TYPE_DESCRIPTION_ASCII)
>         fieldType = FIELD_TYPE_ASCII;
>     else
>         throw new ImageWriteException("Tag has unexpected data type.");
>     byte bytes[] = fieldType.writeData(value, byteOrder);
>     return new TiffOutputField(tagInfo.tag, tagInfo, fieldType, 1, bytes);
> }

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to