在这个信息爆炸的时代,了解图形编辑器和图片文字提取器的重要性不言而喻。本文将为您带来全面的解读,助您在这个领域中游刃有余。

有什么好的图片编辑软件

1、AdobePhotoshop

图形编辑器?图片文字提取器

AdobePhotoshop,简称“PS”,是由AdobeSystems开发和发行的图像处理软件。

Photoshop主要处理以像素所构成的数字图像。使用其众多的编修与绘图工具,可以有效地进行图片编辑工作。ps有很多功能,在图像、图形、文字、视频、出版等各方面都有涉及。

2、美图秀秀

美图秀秀是2008年10月8日由厦门美图科技有限公司研发、推出的一款免费图片处理的软件,有iPhone版、Android版、PC版、WindowsPhone版、iPad版及网页版,致力于为全球用户提供专业智能的拍照、修图服务。

美图秀秀的图片特效、美容、拼图、场景、边框、饰品等功能,可以1分钟做出影楼级照片,还能一键分享到新浪微博、人人网、QQ空间等。

图形编辑器?图片文字提取器

3、光影魔术手

款针对图像画质进行改善提升及效果处理的软件;简单、易用,不需要任何专业的图像技术,就可以制作出专业胶片摄影的色彩效果,其具有许多独特之处,如反转片效果、黑白效果、数码补光、冲版排版等‘’。

且其批量处理功能非常强大,是摄影作品后期处理、图片快速美容、数码照片冲印整理时必备的图像处理软件,能够满足绝大部分人照片后期处理的需要。

4、海报工厂

海报工厂是一款专门用于图片设计、美化、拼接、制作的APP软件,海报工厂于2014年7月24日推出公测上市,由美图秀秀官方和数十位国内外知名设计师倾心打造。款款都带范儿。里面拥有杂志封面、电影海报、美食菜单、旅行日志等最潮海报元素,一秒打造视觉大片。

5、PhotoPos(图形编辑器)

一款先进的图片和CG编辑工具,支持多种图片格式、支持扫描仪和数码相机、包括图像增强和编辑工具、Rich文本工具、支持特效、层和蒙版、支持纹理、支持脚本和批量操作.PhotoPosPro是一款高性能的数字图像处理、浏览软件.具有图层、遮罩、脚本、批处理等高级特性.支持大多数扫描仪、数码相机。

参考资料来源:百度百科-图形编辑器

百度百科-美图秀秀

百度百科-光影魔术手

百度百科-AdobePhotoshop

百度百科-海报工厂

cad块编辑器怎么用

块编辑(BEDIT)

如果我们只是需要编辑图块的图形,块编辑的操作非常简单。在块编辑中提供了大量的参数、动作设置,可以给图块设置复杂的动作,可以让图块实现参数化,可以将多个图形合并成一个图块,也可以将一个图块变换成多个图块,块编辑器非常复杂,这里先简单给大家介绍一下操作。

1、创建一个图块或打开一张有图块的图纸,双击一个普通且没有属性文字的图块,软件会弹出块编辑对话框。

2、我们也可以直接输入BEDIT命令或者在命令面板单击块编辑按钮先打开对话框,再在列表中选择我们要编辑的图块。

从预览图和名称确认是我们要编辑的图块后,单击“确定”按钮,进入块编辑器。

3、进入块编辑器后,图形窗口中将只显示图块的图形,同时会显示块编辑器的面板、选项板,如果用经典界面,则会显示快编辑相关的工具栏。

我们可以看到快编辑器有大量的工具,如果要仔细介绍,可以写一本书,这里就不再详细介绍,以后再单独介绍,下面我们只看看修改图形的基本操作。

在块编辑器状态下,我们可以用绘图、修改的各项命令,添加、编辑、删除图形,当图形修改完毕,单击“关闭块编辑器”按钮,如下图所示。

4、软件会提示是否保存对图块所做修改,选择将修改保存到图块,退出块编辑器。

5、退出块编辑后,图形将恢复显示。

参照编辑(REFEDIT)

参照编辑功能是在块编辑之前广泛使用的编辑图块的功能,在没有块编辑器之前,双击图块会进入参照编辑功能。参照编辑功能不仅可以编辑图块,还可以编辑外部参照(XREF),现在版本双击外部参照时还会自动执行参照编辑功能。

参照编辑功能就是可以选择图块插入后的任意一个块参照,通过编辑这个参照来修改图块的定义。参照编辑和块编辑不同的是,当进入参照编辑状态时,其他图形仍然可以显示,我们可以将其他图形添加到图块中,也可以将图块中的图形分离出去。

因为参照编辑时可以看到其他图形,块编辑则不行,而大多数人并不会去定义动态块,因此很多设计人员编辑图块时仍喜欢用参照编辑,而且喜欢将双击图块默认执行的命令改成参照编辑。下面我们简单介绍一下参照编辑的操作。

1、创建一个图块或打开一张有图块的图纸,选择图块,输入命令REFEDIT后回车或者在菜单或工具栏选择参照编辑命令,回车,打开参照编辑对话框。如下图所示。

2、如果我们选择的只是一个简单的图块,列表中将只显示当前图块的名称。我们注意下面有两个关于嵌套图块的选项,所谓嵌套图块,就是一个图块中包含其他图块,比如说桌子和椅子分别是两个独立的图块,我们可以将一张桌子和四把椅子在做成一个桌椅的图块,那么这就成了一个嵌套图块。如果选择的是嵌套图块,这里将显示一个列表,下一级的图块都将列出来,我们可以选择编辑整个图块或者选择其中一个嵌套的图块进行编辑。

此外这个对话框还有一个设置选项卡,里面有三个选项,可以先看一下,主要是最后一个“锁定不在工作集中的对象”会对编辑有一些影响,所谓不在工作集,也就是图块之外的其他图形。

我们采用默认选项,单击确定,关闭参照编辑对话框,进入参照编辑状态,如下图所示。

3、在命令面板中会显示参照编辑的面板,如果用经典界面,会弹出参照编辑工具栏。进入参照编辑状态后,图块内图形正常显示,其他图形会褪色显示,这样可以区别出内外的图形。

我们注意在工具栏中有两个按钮,一个是添加到工作集,一个是从工作集中删除,这就是块编辑无法实现的功能。

3尝试上面两个编辑功能以及其他绘图和编辑命令后,单击保存修改或放弃修改按钮,退出参照编辑功能。

记住参照编辑后必须退出参照编辑功能,当年有很多人用的是经典界面,参照编辑完图块后直接将参照编辑工具栏关掉了,没有退出参照编辑功能,结果发现图纸没法保存了,每次保存都会弹出如下提示。

4、由于参照编辑工具栏被关闭,也不知道关闭参照编辑的命令,就不知道怎么办才好了。现在参照编辑用的人少了,这个问题不那么突出了,但也最好记一下,参照编辑关闭的命令是REFCLOSE,万一遇到了大家就知道怎么解决了。

参照裁剪(XCLIP)

1、XCLIP命令不仅可以裁剪图块,也可以裁剪外部参照,不仅可以将封闭区域外的图块裁剪掉,也可以反向裁剪封闭区域内的图形。有些设计人员会将复杂图形做成图块,然后在不同时间取图块的一部分,此时就可以用XCLIP进行裁剪。这个操作并不复杂,可以裁剪时画编辑,也可以实现画好封闭的多段线,裁剪时选择这条多段线,这里就不在详细介绍了,以后单独再介绍。

增强属性编辑器

如果图块内有属性文字,被称为属性块,双击此类图块时不会弹出块编辑器或参照编辑,而是会弹出增强属性编辑器,因为这类图块通常会修改属性,而不是图形,如下图所示。

小结

1、上面只是简单给大家介绍了图块编辑相关的命令,每种命令都没有展开讲,只是让大家有一个初步了解,如果想了解这些命令的用法,请关注后面发的相关经验。

注意事项:

以上技巧适用于AUTOCAD和浩辰CAD等类似的CAD软件

用JAVA实现的图形编辑器

楼主给你一个我的,直接保存成pb.java编译运行,就是你要的画图功能,可以参考一下

____________________________________________________________________

import java.applet.*;

import java.awt.*;

import java.awt.event.*;

import java.util.*;

import javax.swing.*;

import java.awt.geom.*;

import java.io.*;

class Point implements Serializable

{

int x,y;

Color col;

int tool;

int boarder;

Point(int x, int y, Color col, int tool, int boarder)

{

this.x= x;

this.y= y;

this.col= col;

this.tool= tool;

this.boarder= boarder;

}

}

class paintboard extends Frame implements ActionListener,MouseMotionListener,MouseListener,ItemListener

{

int x=-1, y=-1;

int con= 1;//画笔大小

int Econ= 5;//橡皮大小

int toolFlag= 0;//toolFlag:工具标记

//toolFlag工具对应表:

//(0--画笔);(1--橡皮);(2--清除);

//(3--直线);(4--圆);(5--矩形);

Color c= new Color(0,0,0);//画笔颜色

BasicStroke size= new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);//画笔粗细

Point cutflag= new Point(-1,-1, c, 6, con);//截断标志

Vector paintInfo= null;//点信息向量组

int n= 1;

FileInputStream picIn= null;

FileOutputStream picOut= null;

ObjectInputStream VIn= null;

ObjectOutputStream VOut= null;

//*工具面板--画笔,直线,圆,矩形,多边形,橡皮,清除*/

Panel toolPanel;

Button eraser, drLine,drCircle,drRect;

Button clear,pen;

Choice ColChoice,SizeChoice,EraserChoice;

Button colchooser;

Label颜色,大小B,大小E;

//保存功能

Button openPic,savePic;

FileDialog openPicture,savePicture;

paintboard(String s)

{

super(s);

addMouseMotionListener(this);

addMouseListener(this);

paintInfo= new Vector();

/*各工具按钮及选择项*/

//颜色选择

ColChoice= new Choice();

ColChoice.add("black");

ColChoice.add("red");

ColChoice.add("blue");

ColChoice.add("green");

ColChoice.addItemListener(this);

//画笔大小选择

SizeChoice= new Choice();

SizeChoice.add("1");

SizeChoice.add("3");

SizeChoice.add("5");

SizeChoice.add("7");

SizeChoice.add("9");

SizeChoice.addItemListener(this);

//橡皮大小选择

EraserChoice= new Choice();

EraserChoice.add("5");

EraserChoice.add("9");

EraserChoice.add("13");

EraserChoice.add("17");

EraserChoice.addItemListener(this);

////////////////////////////////////////////////////

toolPanel= new Panel();

clear= new Button("清除");

eraser= new Button("橡皮");

pen= new Button("画笔");

drLine= new Button("画直线");

drCircle= new Button("画圆形");

drRect= new Button("画矩形");

openPic= new Button("打开图画");

savePic= new Button("保存图画");

colchooser= new Button("显示调色板");

//各组件事件监听

clear.addActionListener(this);

eraser.addActionListener(this);

pen.addActionListener(this);

drLine.addActionListener(this);

drCircle.addActionListener(this);

drRect.addActionListener(this);

openPic.addActionListener(this);

savePic.addActionListener(this);

colchooser.addActionListener(this);

颜色= new Label("画笔颜色",Label.CENTER);

大小B= new Label("画笔大小",Label.CENTER);

大小E= new Label("橡皮大小",Label.CENTER);

//面板添加组件

toolPanel.add(openPic);

toolPanel.add(savePic);

toolPanel.add(pen);

toolPanel.add(drLine);

toolPanel.add(drCircle);

toolPanel.add(drRect);

toolPanel.add(颜色); toolPanel.add(ColChoice);

toolPanel.add(大小B); toolPanel.add(SizeChoice);

toolPanel.add(colchooser);

toolPanel.add(eraser);

toolPanel.add(大小E); toolPanel.add(EraserChoice);

toolPanel.add(clear);

//工具面板到APPLET面板

add(toolPanel,BorderLayout.NORTH);

setBounds(60,60,900,600); setVisible(true);

validate();

//dialog for save and load

openPicture= new FileDialog(this,"打开图画",FileDialog.LOAD);

openPicture.setVisible(false);

savePicture= new FileDialog(this,"保存图画",FileDialog.SAVE);

savePicture.setVisible(false);

openPicture.addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{ openPicture.setVisible(false);}

});

savePicture.addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{ savePicture.setVisible(false);}

});

addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{ System.exit(0);}

});

}

public void paint(Graphics g)

{

Graphics2D g2d=(Graphics2D)g;

Point p1,p2;

n= paintInfo.size();

if(toolFlag==2)

g.clearRect(0,0,getSize().width,getSize().height);//清除

for(int i=0; i<n;i++){

p1=(Point)paintInfo.elementAt(i);

p2=(Point)paintInfo.elementAt(i+1);

size= new BasicStroke(p1.boarder,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);

g2d.setColor(p1.col);

g2d.setStroke(size);

if(p1.tool==p2.tool)

{

switch(p1.tool)

{

case 0://画笔

Line2D line1= new Line2D.Double(p1.x, p1.y, p2.x, p2.y);

g2d.draw(line1);

break;

case 1://橡皮

g.clearRect(p1.x, p1.y, p1.boarder, p1.boarder);

break;

case 3://画直线

Line2D line2= new Line2D.Double(p1.x, p1.y, p2.x, p2.y);

g2d.draw(line2);

break;

case 4://画圆

Ellipse2D ellipse= new Ellipse2D.Double(p1.x, p1.y, Math.abs(p2.x-p1.x), Math.abs(p2.y-p1.y));

g2d.draw(ellipse);

break;

case 5://画矩形

Rectangle2D rect= new Rectangle2D.Double(p1.x, p1.y, Math.abs(p2.x-p1.x), Math.abs(p2.y-p1.y));

g2d.draw(rect);

break;

case 6://截断,跳过

i=i+1;

break;

default:

}//end switch

}//end if

}//end for

}

public void itemStateChanged(ItemEvent e)

{

if(e.getSource()==ColChoice)//预选颜色

{

String name= ColChoice.getSelectedItem();

if(name=="black")

{c= new Color(0,0,0);}

else if(name=="red")

{c= new Color(255,0,0);}

else if(name=="green")

{c= new Color(0,255,0);}

else if(name=="blue")

{c= new Color(0,0,255);}

}

else if(e.getSource()==SizeChoice)//画笔大小

{

String selected= SizeChoice.getSelectedItem();

if(selected=="1")

{

con= 1;

size= new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);

}

else if(selected=="3")

{

con= 3;

size= new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);

}

else if(selected=="5")

{con= 5;

size= new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);

}

else if(selected=="7")

{con= 7;

size= new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);

}

else if(selected=="9")

{con= 9;

size= new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);

}

}

else if(e.getSource()==EraserChoice)//橡皮大小

{

String Esize= EraserChoice.getSelectedItem();

if(Esize=="5")

{ Econ= 5*2;}

else if(Esize=="9")

{ Econ= 9*2;}

else if(Esize=="13")

{ Econ= 13*2;}

else if(Esize=="17")

{ Econ= 17*3;}

}

}

public void mouseDragged(MouseEvent e)

{

Point p1;

switch(toolFlag){

case 0://画笔

x=(int)e.getX();

y=(int)e.getY();

p1= new Point(x, y, c, toolFlag, con);

paintInfo.addElement(p1);

repaint();

break;

case 1://橡皮

x=(int)e.getX();

y=(int)e.getY();

p1= new Point(x, y, null, toolFlag, Econ);

paintInfo.addElement(p1);

repaint();

break;

default:

}

}

public void mouseMoved(MouseEvent e){}

public void update(Graphics g)

{

paint(g);

}

public void mousePressed(MouseEvent e)

{

Point p2;

switch(toolFlag){

case 3://直线

x=(int)e.getX();

y=(int)e.getY();

p2= new Point(x, y, c, toolFlag, con);

paintInfo.addElement(p2);

break;

case 4://圆

x=(int)e.getX();

y=(int)e.getY();

p2= new Point(x, y, c, toolFlag, con);

paintInfo.addElement(p2);

break;

case 5://矩形

x=(int)e.getX();

y=(int)e.getY();

p2= new Point(x, y, c, toolFlag, con);

paintInfo.addElement(p2);

break;

default:

}

}

public void mouseReleased(MouseEvent e)

{

Point p3;

switch(toolFlag){

case 0://画笔

paintInfo.addElement(cutflag);

break;

case 1://eraser

paintInfo.addElement(cutflag);

break;

case 3://直线

x=(int)e.getX();

y=(int)e.getY();

p3= new Point(x, y, c, toolFlag, con);

paintInfo.addElement(p3);

paintInfo.addElement(cutflag);

repaint();

break;

case 4://圆

x=(int)e.getX();

y=(int)e.getY();

p3= new Point(x, y, c, toolFlag, con);

paintInfo.addElement(p3);

paintInfo.addElement(cutflag);

repaint();

break;

case 5://矩形

x=(int)e.getX();

y=(int)e.getY();

p3= new Point(x, y, c, toolFlag, con);

paintInfo.addElement(p3);

paintInfo.addElement(cutflag);

repaint();

break;

default:

}

}

public void mouseEntered(MouseEvent e){}

public void mouseExited(MouseEvent e){}

public void mouseClicked(MouseEvent e){}

public void actionPerformed(ActionEvent e)

{

if(e.getSource()==pen)//画笔

{toolFlag= 0;}

if(e.getSource()==eraser)//橡皮

{toolFlag= 1;}

if(e.getSource()==clear)//清除

{

toolFlag= 2;

paintInfo.removeAllElements();

repaint();

}

if(e.getSource()==drLine)//画线

{toolFlag= 3;}

if(e.getSource()==drCircle)//画圆

{toolFlag= 4;}

if(e.getSource()==drRect)//画矩形

{toolFlag= 5;}

if(e.getSource()==colchooser)//调色板

{

Color newColor= JColorChooser.showDialog(this,"调色板",c);

c= newColor;

}

if(e.getSource()==openPic)//打开图画

{

openPicture.setVisible(true);

if(openPicture.getFile()!=null)

{

int tempflag;

tempflag= toolFlag;

toolFlag= 2;

repaint();

try{

paintInfo.removeAllElements();

File filein= new File(openPicture.getDirectory(),openPicture.getFile());

picIn= new FileInputStream(filein);

VIn= new ObjectInputStream(picIn);

paintInfo=(Vector)VIn.readObject();

VIn.close();

repaint();

toolFlag= tempflag;

}

catch(ClassNotFoundException IOe2)

{

repaint();

toolFlag= tempflag;

System.out.println("can not read object");

}

catch(IOException IOe)

{

repaint();

toolFlag= tempflag;

System.out.println("can not read file");

}

}

}

if(e.getSource()==savePic)//保存图画

{

savePicture.setVisible(true);

try{

File fileout= new File(savePicture.getDirectory(),savePicture.getFile());

picOut= new FileOutputStream(fileout);

VOut= new ObjectOutputStream(picOut);

VOut.writeObject(paintInfo);

VOut.close();

}

catch(IOException IOe)

{

System.out.println("can not write object");

}

}

}

}//end paintboard

public class pb

{

public static void main(String args[])

{ new paintboard("画图程序");}

}