⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 svgexport.java

📁 完全基于java开发的svg矢量绘图工具
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
                            case PNG_FORMAT :                                extension=".png";                                progressBarDialogTitle=pngExportDialog.getExportDialogTitle();                break;                            case BMP_FORMAT :                                extension=".bmp";                                progressBarDialogTitle=bmpExportDialog.getExportDialogTitle();                break;                            case TIFF_FORMAT :                                extension=".tiff";                                progressBarDialogTitle=tiffExportDialog.getExportDialogTitle();                break;                            case PDF_FORMAT :                                extension=".pdf";                                progressBarDialogTitle=pdfExportDialog.getExportDialogTitle();                break;            }                        //handling the path            if(! path.endsWith(extension)){                                 path+=extension;            }                        final String fpath=path;                        //the progress bar            SVGProgressBarDialog pb=null;                        if(getSVGEditor().getParent() instanceof JFrame){            	            	pb=new SVGProgressBarDialog((JFrame)getSVGEditor().getParent(), progressBarDialogTitle);            	            }else{            	            	pb=new SVGProgressBarDialog(new JFrame(""), progressBarDialogTitle);            }                        final SVGProgressBarDialog progressBar=pb;                        switch(exportType) {                        case JPG_FORMAT :                                res=jpgExportDialog.showExportDialog(frame);                                if(res==ExportDialog.OK_ACTION){                                        //initializing the progress bar and showing it                    progressBar.setIndeterminate(true, true);                    progressBar.setVisible(true);                                        final double width=jpgExportDialog.getExportSize().x, height=jpgExportDialog.getExportSize().y;                    final float jpgQuality=jpgExportDialog.getJpgQuality();                    final boolean  isOptimized=jpgExportDialog.isOptimized(),                     isProgressive=jpgExportDialog.isProgressive();                                        //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);                                                                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/jpeg");                                                                //getting the image writer                                ImageWriter w=null;                                                                while(it.hasNext()) {                                                                        w=it.next();                                                                        if(w instanceof JPEGImageWriter) {                                                                                break;                                    }                                }                                                                final ImageWriter writer=w;                                                                //setting the parameters for the jpeg transcoding                                JPEGImageWriteParam params=new JPEGImageWriteParam(Locale.getDefault());                                params.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);                                params.setCompressionQuality(jpgQuality);                                params.setOptimizeHuffmanTables(isOptimized);                                                                if(isProgressive) {                                                                        params.setProgressiveMode(ImageWriteParam.MODE_DEFAULT);                                                                    }else {                                                                        params.setProgressiveMode(ImageWriteParam.MODE_DISABLED);                                }                                                                //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 arg0, 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, params);                                                                //cleaning up                                out.flush();                                writer.removeAllIIOWriteProgressListeners();                                progressBar.setVisible(false);                                writer.dispose();                                out.close();                                                            }catch (Exception ex){                                                                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 PNG_FORMAT :                                res=pngExportDialog.showExportDialog(frame);                                if(res==ExportDialog.OK_ACTION){                                        //initializing the progress bar and showing it                    progressBar.setIndeterminate(true, true);                    progressBar.setVisible(true);                                        final double width=pngExportDialog.getExportSize().x, height=pngExportDialog.getExportSize().y;                    /*final int imageType=pngExportDialog.getImageType();                    final int pngQuality=pngExportDialog.getPngBitDepths();*/                                        //creating the canvas that will be used to generate the pdf                    new ExportCanvas(frame.getScrollPane().getSVGCanvas().getDocument(), progressBar) {                                            	@Override                        protected void doWhenRenderingDone() {                                                        try{                                                                //creating the image that will be written                                BufferedImage wImage=new BufferedImage((int)width, (int)height, BufferedImage.TYPE_INT_RGB);                                                                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/png");                                                                ImageWriter w=null;                                                                while(it.hasNext()) {                                    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -