📄 svgexport.java
字号:
w=it.next(); if(w instanceof PNGImageWriter) { break; } } final ImageWriter writer=w; //writing the image ImageOutputStream out=ImageIO.createImageOutputStream(new File(new URI(fpath))); writer.setOutput(out); //adding the listener to the writer writer.addIIOWriteProgressListener(new IIOWriteProgressListener() { public void imageComplete(ImageWriter wr) { writer.removeIIOWriteProgressListener(this); progressBar.setVisible(false); } public void writeAborted(ImageWriter wr) { writer.removeIIOWriteProgressListener(this); progressBar.setVisible(false); } public void imageProgress(ImageWriter wr, float value) { progressBar.setProgressBarValue(25+3*value/4, 0, 100); if(progressBar.cancelAction()) { writer.abort(); JOptionPane.showMessageDialog( getSVGEditor().getParent(), messageexporterror, labelerror, JOptionPane.WARNING_MESSAGE); } } public void imageStarted(ImageWriter wr, int arg1) {} public void thumbnailComplete(ImageWriter wr) {} public void thumbnailProgress(ImageWriter wr, float arg1) {} public void thumbnailStarted(ImageWriter wr, int arg1, int arg2) {} }); writer.write(null, iioImage, writer.getDefaultWriteParam()); //cleaning up out.flush(); writer.removeAllIIOWriteProgressListeners(); progressBar.setVisible(false); writer.dispose(); out.close(); }catch (Exception ex){ ex.printStackTrace(); progressBar.setVisible(false); SwingUtilities.invokeLater(new Runnable() { public void run() { JOptionPane.showMessageDialog( getSVGEditor().getParent(), messageexporterror, labelerror, JOptionPane.WARNING_MESSAGE); } }); try{ //removing the file that had to be written new File(new URI(fpath)).delete(); }catch (Exception ex2) {} } } }; } break; case BMP_FORMAT : res=bmpExportDialog.showExportDialog(frame); if(res==ExportDialog.OK_ACTION){ //initializing the progress bar and showing it progressBar.setIndeterminate(true, true); progressBar.setVisible(true); final double width=bmpExportDialog.getExportSize().x, height=bmpExportDialog.getExportSize().y; final boolean usePalette=bmpExportDialog.isUsePalette(); //creating the canvas that will be used to generate the pdf new ExportCanvas(frame.getScrollPane().getSVGCanvas().getDocument(), progressBar) { protected void doWhenRenderingDone() { try{ int type=BufferedImage.TYPE_3BYTE_BGR; if(usePalette) { type=BufferedImage.TYPE_BYTE_INDEXED; } //creating the image that will be written BufferedImage wImage=new BufferedImage((int)width, (int)height, type); Graphics2D g2=(Graphics2D)wImage.getGraphics(); //getting the graphics node that will be painted GraphicsNode gn=getGraphicsNode(); //computing the graphics transformation so that the image is scaled to the defined size Dimension canvasSize=getCanvasSize(); gn.setTransform(AffineTransform.getScaleInstance(width/canvasSize.width, height/canvasSize.height)); //painting the image g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); g2.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY); g2.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY); g2.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_DISABLE); g2.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON); g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC); g2.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); g2.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE); g2.setColor(Color.white); g2.fillRect(0, 0, (int)width, (int)height); gn.paint(g2); //creating the IIOImage IIOImage iioImage=new IIOImage(wImage, null, null); Iterator<ImageWriter> it=ImageIO.getImageWritersByMIMEType("image/bmp"); ImageWriter w=null; while(it.hasNext()) { w=it.next(); if(w instanceof BMPImageWriter) { break; } } //getting the image writer final ImageWriter writer=w; BMPImageWriteParam param=new BMPImageWriteParam(); param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); if(usePalette) { param.setCompressionType("BI_RGB"); }else { param.setCompressionType("BI_BITFIELDS"); } ImageOutputStream out=ImageIO.createImageOutputStream(new RandomAccessFile(new File(new URI(fpath)), "rw")); //writing the image writer.setOutput(out); //adding the listener to the writer writer.addIIOWriteProgressListener(new IIOWriteProgressListener() { public void imageComplete(ImageWriter wr) { writer.removeIIOWriteProgressListener(this); progressBar.setVisible(false); } public void writeAborted(ImageWriter wr) { writer.removeIIOWriteProgressListener(this); progressBar.setVisible(false); } public void imageProgress(ImageWriter wr, float value) { progressBar.setProgressBarValue(25+3*value/4, 0, 100); if(progressBar.cancelAction()) { writer.abort(); JOptionPane.showMessageDialog( getSVGEditor().getParent(), messageexporterror, labelerror, JOptionPane.WARNING_MESSAGE); } } public void imageStarted(ImageWriter wr, int arg1) {} public void thumbnailComplete(ImageWriter wr) {} public void thumbnailProgress(ImageWriter wr, float arg1) {} public void thumbnailStarted(ImageWriter wr, int arg1, int arg2) {} }); writer.write(null, iioImage, param); //cleaning up out.flush(); writer.removeAllIIOWriteProgressListeners(); progressBar.setVisible(false); writer.dispose(); out.close(); }catch (Exception ex){ ex.printStackTrace(); progressBar.setVisible(false); SwingUtilities.invokeLater(new Runnable() { public void run() { JOptionPane.showMessageDialog( getSVGEditor().getParent(), messageexporterror, labelerror, JOptionPane.WARNING_MESSAGE); } }); try{ //removing the file that had to be written new File(new URI(fpath)).delete(); }catch (Exception ex2) {} } } }; } break; case TIFF_FORMAT : res=tiffExportDialog.showExportDialog(frame); if(res==ExportDialog.OK_ACTION){ //initializing the progress bar and showing it progressBar.setIndeterminate(true, true); progressBar.setVisible(true); final double width=tiffExportDialog.getExportSize().x, height=tiffExportDialog.getExportSize().y; //creating the canvas that will be used to generate the pdf new ExportCanvas(frame.getScrollPane().getSVGCanvas().getDocument(), progressBar) { protected void doWhenRenderingDone() { try{ //creating the image that will be written BufferedImage wImage=new BufferedImage((int)width, (int)height, BufferedImage.TYPE_INT_RGB);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -