So there seem to have been a couple layers to the problem.
First, the import com.sun.imageio.plugins.tiff.TIFFImageReaderSpi
statement was importing the Apple TIFF reader, which apparently just wasn't up to the job of reading my TIFF.
What I really needed was import com.sun.media.imageioimpl.plugins.tiff.TIFFImageReaderSpi
, but that presented me with a couple of different errors; don't worry, I was able to fix them. :)
First, the import wasn't resolving. To get the com.sun.media.imageioimpl package, I got the source for a bundled JAI from https://github.com/stain/jai-imageio-core. I imported that into Eclipse, then built a JAR using Eclipse's Export tool. This I placed in my project's lib folder, but the import still wasn't resolving. I had to manually add that jar to my project's classpath, and then the import would resolve.
Second, when I ran the app, I'd get this error:
| Error 2013-06-19 11:15:27,665 [http-bio-8080-exec-3] ERROR errors.GrailsExceptionResolver - IllegalArgumentException occurred when processing request: [GET] /pluginproject/Controller/action - parameters:
vendorName == null!. Stacktrace follows:
Message: vendorName == null!
Line | Method
->> 59 | <init> in javax.imageio.spi.IIOServiceProvider
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 214 | <init> in javax.imageio.spi.ImageReaderWriterSpi
| 192 | <init> . . . . . . in javax.imageio.spi.ImageReaderSpi
| 88 | <init> in com.sun.media.imageioimpl.plugins.tiff.TIFFImageReaderSpi
| 31 | bytesToPng . . . . in edu.mystateu.pluginproject.ImageService
vendorName == null? Fortunately, I found this question/answer.
When creating the jar file for jai-imageio-core, I had to manually specify the location of the manifest file, rather than letting Eclipse generate a new blank one. The manifest file was located in /jai-imageio-core/src/main/resources/META-INF/MANIFEST.MF, and once I specified to use that one, the imported lib resolved and read my image.
In the end, the service method's code was perfectly fine. I just needed to actually get JAI imported into my project correctly. Thanks very much to @haraldK, whose feedback got me on the right track.