java - Write GeoTIFF metadata from one file to other -
my task take 1 geotiff, make image segmentation on in, , save new geotiff(with existing coordinates). if understand correctly, coordinates preserved in geotiff metadata. grab metadata original file:
file file = new file(inputfilepath); imageinputstream iis = imageio.createimageinputstream(file); iterator<imagereader> readers = imageio.getimagereaders(iis); iiometadata metadata=null; imagereader reader=null; if (readers.hasnext()) { // pick first available imagereader reader = readers.next(); // attach source reader reader.setinput(iis, true); // read metadata of first image metadata = reader.getimagemetadata(0); } and when system.out.println("metadata: "+metadata);, see correct xml tree of metatags. i'm magic image
system.out.println("starting segmentation"); bufferedimage image = utilimageio.loadimage(inputimage); // select input image type. algorithms behave different depending on image type imagetype<multispectral<imagefloat32>> imagetype = imagetype.ms(3, imagefloat32.class); imagesuperpixels alg = factoryimagesegmentation.fh04(new configfh04(500, 30), imagetype); // convert image boofcv format imagebase color = imagetype.createimage(image.getwidth(), image.getheight()); convertbufferedimage.convertfrom(image, color, true); // segment , display results performsegmentation(alg, color); system.out.println("segmentation finished"); in result obtain bufferedimage(resultbufferedimage) image segmentation. , here starts problems, i'm trying save bufferedimage old metadata:
bufferedoutputstream out; imagewriter writer = imageio.getimagewriter(reader); imageoutputstream imgout = null; fileoutputstream fos =null; fos = new fileoutputstream(outputimage); out = new bufferedoutputstream(fos); imgout = imageio.createimageoutputstream(out); writer.setoutput(imgout); imagewriteparam param = writer.getdefaultwriteparam(); iioimage destiioimage = new iioimage(resultbufferedimage, null, metadata); system.out.println("before write"); writer.write(null, destiioimage, null); system.out.println("after write"); i printed "after write". program still running, tried wait, no results. when kill process file created successfully, geodata. how can determine finish of writing , stop program? p.s. image in default ubuntu viewer seems nice, when opened in qgis have transparent fields, , how can make gray background transparent?
not real answer, here's 2 answers on how make tiff transparent:
Comments
Post a Comment