成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

截屏工具java代碼 截圖代碼編寫

用JAVA怎么做截屏工具?

哎~要是你給我個分就好了!我前幾天剛剛做的!你拿去吧!

創(chuàng)新互聯專注于企業(yè)全網整合營銷推廣、網站重做改版、秀嶼網站定制設計、自適應品牌網站建設、H5建站、商城網站建設、集團公司官網建設、成都外貿網站建設、高端網站制作、響應式網頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為秀嶼等各大城市提供網站開發(fā)制作服務。

/*

作者:泡沫

地址:

功能:用于截取圖片,方便快捷!

mail:yuhuidog#163.com (注意:其中#為@)

*/

import java.awt.AWTException;

import java.awt.BorderLayout;

import java.awt.Button;

import java.awt.Color;

import java.awt.Cursor;

import java.awt.Dimension;

import java.awt.FileDialog;

import java.awt.Frame;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.Panel;

import java.awt.Point;

import java.awt.Rectangle;

import java.awt.Robot;

import java.awt.Toolkit;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.awt.event.MouseMotionListener;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import javax.imageio.ImageIO;

public class AWTpicture extends Frame implements MouseListener,MouseMotionListener,ActionListener{

private int firstX,firstY,frameWidth,frameHeight;

private int firstWith,firstHeight,firstPointx,firstPointy;

private BufferedImage bi,sbi,original;

private Robot robot;

private Rectangle rectangle;

private Rectangle rectangleCursor,rectangleCursorUp,rectangleCursorDown,rectangleCursorLeft,rectangleCursorRight;

private Rectangle rectangleCursorRU,rectangleCursorRD,rectangleCursorLU,rectangleCursorLD;

private Image bis;

private Dimension dimension;

private Button button,button2,clearButton;

private Point[] point=new Point[3];

private int width,height;

private int nPoints=5;

private Panel panel;

private boolean drawHasFinish=false,change=false;

private int changeFirstPointX,changeFirstPointY,changeWidth,changeHeight;

private boolean changeUP=false,changeDOWN=false,changeLEFT=false,changeRIGHT=false,changeRU=false,changeRD=false,changeLU=false,changeLD=false;

private boolean clearPicture=false,redraw=false;

private FileDialog fileDialog;

private AWTpicture(){

//取得屏幕大小

dimension=Toolkit.getDefaultToolkit().getScreenSize();

frameWidth=dimension.width;

frameHeight=dimension.height;

fileDialog=new FileDialog(this,"泡沫截圖",FileDialog.SAVE);

rectangle=new Rectangle(frameWidth,frameHeight);

panel=new Panel();

button=new Button("退出");

button.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));

button.setBackground(Color.green);

button2=new Button("截取");

button2.setBackground(Color.darkGray);

button2.addActionListener(new MyTakePicture(this));

button2.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));

button.addActionListener(this);

clearButton=new Button("重繪");

clearButton.setBackground(Color.green);

clearButton.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));

clearButton.addActionListener(new MyClearPicture(this));

panel.setLayout(new BorderLayout());

panel.add(clearButton, BorderLayout.SOUTH);

panel.add(button, BorderLayout.NORTH);

panel.add(button2, BorderLayout.CENTER);

try {

robot=new Robot();

} catch (AWTException e) {

e.printStackTrace();

}

//截取全屏

bi=robot.createScreenCapture(rectangle);

original=bi;

this.setSize(frameWidth,frameHeight);

this.setUndecorated(true);

this.addMouseListener(this);

this.addMouseMotionListener(this);

this.add(panel,BorderLayout.EAST);

this.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));

this.setVisible(true);

this.repaint();

}

public static void main(String[] args){

new AWTpicture();

}

public void paint(Graphics g) {

this.drawR(g);

}

//緩存圖片

public void update(Graphics g){

if(bis==null){

bis=this.createImage(frameWidth, frameHeight);

}

Graphics ga=bis.getGraphics();

Color c=ga.getColor();

ga.setColor(Color.black);

ga.fillRect(0, 0, frameWidth, frameHeight);

ga.setColor(c);

paint(ga);

g.drawImage(bis, 0, 0, frameWidth, frameHeight, null);

}

public void mouseClicked(MouseEvent e) {

}

public void mouseEntered(MouseEvent e) {

// TODO Auto-generated method stub

}

public void mouseExited(MouseEvent e) {

// TODO Auto-generated method stub

}

public void mousePressed(MouseEvent e) {

// TODO Auto-generated method stub

}

public void mouseReleased(MouseEvent e) {

if(!drawHasFinish){

if(point[1].xpoint[2].x point[1].ypoint[2].y){

firstPointx=point[1].x;

firstPointy=point[1].y;

}

if(point[1].xpoint[2].x point[1].ypoint[2].y){

firstPointx=point[2].x;

firstPointy=point[1].y;

}

if(point[1].xpoint[2].x point[1].ypoint[2].y){

firstPointx=point[1].x;

firstPointy=point[2].y;

}

if(point[1].xpoint[2].x point[1].ypoint[2].y){

firstPointx=point[2].x;

firstPointy=point[2].y;

}

changeFirstPointX=firstPointx;

changeFirstPointY=firstPointy;

if(point[1]!=null point[2]!=null ){

rectangleCursorUp=new Rectangle(firstPointx+20,firstPointy-10,width-40,20);

rectangleCursorDown=new Rectangle(firstPointx+20,firstPointy+height-10,width-40,20);

rectangleCursorLeft=new Rectangle(firstPointx-10,firstPointy+10,20,height-20);

rectangleCursorRight=new Rectangle(firstPointx+width-10,firstPointy+10,20,height-20);

rectangleCursorLU=new Rectangle(firstPointx-10,firstPointy-10,30,20);

rectangleCursorLD=new Rectangle(firstPointx-10,firstPointy+height-10,30,20);

rectangleCursorRU=new Rectangle(firstPointx+width-10,firstPointy-10,20,20);

rectangleCursorRD=new Rectangle(firstPointx+width-10,firstPointy+height-10,20,20);

drawHasFinish=true;

}

}

//確定每邊能改變大小的矩形

if(drawHasFinish){

rectangleCursorUp=new Rectangle(changeFirstPointX+20,changeFirstPointY-10,changeWidth-40,20);

rectangleCursorDown=new Rectangle(changeFirstPointX+20,changeFirstPointY+changeHeight-10,changeWidth-40,20);

rectangleCursorLeft=new Rectangle(changeFirstPointX-10,changeFirstPointY+10,20,changeHeight-20);

rectangleCursorRight=new Rectangle(changeFirstPointX+changeWidth-10,changeFirstPointY+10,20,changeHeight-20);

rectangleCursorLU=new Rectangle(changeFirstPointX-2,changeFirstPointY-2,10,10);

rectangleCursorLD=new Rectangle(changeFirstPointX-2,changeFirstPointY+changeHeight-2,10,10);

rectangleCursorRU=new Rectangle(changeFirstPointX+changeWidth-2,changeFirstPointY-2,10,10);

rectangleCursorRD=new Rectangle(changeFirstPointX+changeWidth-2,changeFirstPointY+changeHeight-2,10,10);

}

}

public void mouseDragged(MouseEvent e) {

point[2]=e.getPoint();

//if(!drawHasFinish){

this.repaint();

// }

//托動鼠標移動大小

if(change){

if(changeUP){

changeHeight=changeHeight+changeFirstPointY-e.getPoint().y;

changeFirstPointY=e.getPoint().y;

}

if(changeDOWN){

changeHeight=e.getPoint().y-changeFirstPointY;

}

if(changeLEFT){

changeWidth=changeWidth+changeFirstPointX-e.getPoint().x;

changeFirstPointX=e.getPoint().x;

}

if(changeRIGHT){

changeWidth=e.getPoint().x-changeFirstPointX;

}

if(changeLU){

changeWidth=changeWidth+changeFirstPointX-e.getPoint().x;

changeHeight=changeHeight+changeFirstPointY-e.getPoint().y;

changeFirstPointX=e.getPoint().x;

changeFirstPointY=e.getPoint().y;

}

if(changeLD){

changeWidth=changeWidth+changeFirstPointX-e.getPoint().x;

changeHeight=e.getPoint().y-changeFirstPointY;

changeFirstPointX=e.getPoint().x;

}

if(changeRU){

changeWidth=e.getPoint().x-changeFirstPointX;

changeHeight=changeHeight+changeFirstPointY-e.getPoint().y;

changeFirstPointY=e.getPoint().y;

}

if(changeRD){

changeWidth=e.getPoint().x-changeFirstPointX;

changeHeight=e.getPoint().y-changeFirstPointY;

}

this.repaint();

}

}

public void mouseMoved(MouseEvent e) {

point[1]=e.getPoint();

//改變鼠標的形狀

if(rectangleCursorUp!=null rectangleCursorUp.contains(point[1])){

this.setCursor(new Cursor(Cursor.N_RESIZE_CURSOR));

change=true;

changeUP=true;

}else if(rectangleCursorDown!=null rectangleCursorDown.contains(point[1])){

this.setCursor(new Cursor(Cursor.S_RESIZE_CURSOR));

change=true;

changeDOWN=true;

}else if(rectangleCursorLeft!=null rectangleCursorLeft.contains(point[1])){

this.setCursor(new Cursor(Cursor.W_RESIZE_CURSOR));

change=true;

changeLEFT=true;

}else if(rectangleCursorRight!=null rectangleCursorRight.contains(point[1]) ){

this.setCursor(new Cursor(Cursor.W_RESIZE_CURSOR));

change=true;

changeRIGHT=true;

}else if(rectangleCursorLU !=null rectangleCursorLU.contains(point[1])){

this.setCursor(new Cursor(Cursor.NW_RESIZE_CURSOR));

change=true;

changeLU=true;

}else if(rectangleCursorLD !=null rectangleCursorLD.contains(point[1])){

this.setCursor(new Cursor(Cursor.SW_RESIZE_CURSOR));

change=true;

changeLD=true;

}else if(rectangleCursorRU!=null rectangleCursorRU.contains(point[1])){

this.setCursor(new Cursor(Cursor.NE_RESIZE_CURSOR));

change=true;

changeRU=true;

}else if(rectangleCursorRD!=null rectangleCursorRD.contains(point[1])){

this.setCursor(new Cursor(Cursor.SE_RESIZE_CURSOR));

change=true;

changeRD=true;

}else{

this.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));

changeUP=false;changeDOWN=false;changeRIGHT=false;changeLEFT=false;changeRU=false;

changeRD=false;changeLU=false;changeLD=false;

}

redraw=false;

}

@Override

public void actionPerformed(ActionEvent e) {

System.exit(0);

}

class MyTakePicture implements ActionListener{

AWTpicture aWTpicture;

MyTakePicture(AWTpicture aWTpicture){

this.aWTpicture=aWTpicture;

}

//保存圖片

public void actionPerformed(ActionEvent e) {

fileDialog.setVisible(true);

if(changeWidth0){

sbi=bi.getSubimage(changeFirstPointX,changeFirstPointY,changeWidth,changeHeight);

File file=new File(fileDialog.getDirectory());

file.mkdir();

try {

ImageIO.write(sbi, "jpeg",new File(file,fileDialog.getFile()+".jpg") );

} catch (IOException e1) {

e1.printStackTrace();

}

}

}

}

class MyClearPicture implements ActionListener{

AWTpicture aWTpicture;

MyClearPicture(AWTpicture aWTpicture){

this.aWTpicture=aWTpicture;

}

public void actionPerformed(ActionEvent e) {

drawHasFinish=false;

change=false;

redraw=true;

rectangleCursorUp=null;

rectangleCursorDown=null;

rectangleCursorLeft=null;

rectangleCursorRight=null;

rectangleCursorRU=null;

rectangleCursorRD=null;

rectangleCursorLU=null;

rectangleCursorLD=null;

changeWidth=0;

changeHeight=0;

aWTpicture.repaint();

}

}

public void drawR(Graphics g){

g.drawImage(bi, 0,0,frameWidth,frameHeight, null);

if(point[1]!=null point[2]!=null !drawHasFinish !redraw){

int[] xPoints={point[1].x,point[2].x,point[2].x,point[1].x,point[1].x};

int[] yPoints={point[1].y,point[1].y,point[2].y,point[2].y,point[1].y};

width=(point[2].x-point[1].x)0?(point[2].x-point[1].x):(point[1].x-point[2].x);

height=(point[2].y-point[1].y)0?(point[2].y-point[1].y):(point[1].y-point[2].y);

changeWidth=width;

changeHeight=height;

Color c=g.getColor();

g.setColor(Color.red);

g.drawString(width+"*"+height, point[1].x, point[1].y-5);

//畫點

/*int i;

if()*/

if(point[1].xpoint[2].x point[1].ypoint[2].y){

firstPointx=point[1].x;

firstPointy=point[1].y;

}

if(point[1].xpoint[2].x point[1].ypoint[2].y){

firstPointx=point[2].x;

firstPointy=point[1].y;

}

if(point[1].xpoint[2].x point[1].ypoint[2].y){

firstPointx=point[1].x;

firstPointy=point[2].y;

}

if(point[1].xpoint[2].x point[1].ypoint[2].y){

firstPointx=point[2].x;

firstPointy=point[2].y;

}

g.fillRect(firstPointx-2,firstPointy-2 , 5,5);

g.fillRect(firstPointx+(width)/2,firstPointy-2 , 5,5);

g.fillRect(firstPointx+width-2,firstPointy-2 , 5,5);

g.fillRect(firstPointx+width-2,firstPointy+ height/2-2, 5,5);

g.fillRect(firstPointx+width-2,firstPointy+height-2, 5,5);

g.fillRect(firstPointx+(width)/2,firstPointy+height-2, 5,5);

g.fillRect(firstPointx-2,firstPointy+height-2, 5,5);

g.fillRect(firstPointx-2,firstPointy+ height/2-2, 5,5);

//畫矩形

//g.drawString("fafda", point[1].x-100, point[1].y-5);

g.drawPolyline(xPoints, yPoints, nPoints);

}

if(change){

g.setColor(Color.red);

g.drawString(changeWidth+"*"+changeHeight, changeFirstPointX, changeFirstPointY-5);

g.fillRect(changeFirstPointX-2,changeFirstPointY-2 , 5,5);

g.fillRect(changeFirstPointX+(changeWidth)/2,changeFirstPointY-2 , 5,5);

g.fillRect(changeFirstPointX+changeWidth-2,changeFirstPointY-2 , 5,5);

g.fillRect(changeFirstPointX+changeWidth-2,changeFirstPointY+ changeHeight/2-2, 5,5);

g.fillRect(changeFirstPointX+changeWidth-2,changeFirstPointY+changeHeight-2, 5,5);

g.fillRect(changeFirstPointX+(changeWidth)/2,changeFirstPointY+changeHeight-2, 5,5);

g.fillRect(changeFirstPointX-2,changeFirstPointY+changeHeight-2, 5,5);

g.fillRect(changeFirstPointX-2,changeFirstPointY+ changeHeight/2-2, 5,5);

g.drawRect(changeFirstPointX, changeFirstPointY, changeWidth, changeHeight);

}

}

}

java 實現截屏!

主要是利用java的幾個先有的函數,如Robot這個類的一個方法createScreenCapture一個獲得一個任意大小的屏幕圖像(在這里是全屏圖像),而所謂的截圖就是在這個圖像上畫出一個矩形,再利用上面的方法獲得這部分的圖像,程序中的cf.setAlwaysOnTop(true)是必需的;看起來是在屏幕上截圖,其實只是在一個在一個內鑲有桌面背景的JFrame中截圖。不知道還有沒有其他的好方法~

附上代碼:

import java.awt.*;

import java.awt.image.*;

import java.awt.event.*;

import java.io.File;

import javax.imageio.ImageIO;

import javax.swing.*;

public class Camera {

/**

* @param args

*/

public static void main(String[] args) {

CameraJFrame cf=new CameraJFrame();

cf.setAlwaysOnTop(true);

cf.setUndecorated(true);

cf.setVisible(true);

}

}

class CameraJFrame extends JFrame

{

/**

*

*/

private static final long serialVersionUID = 1L;

Dimension di=Toolkit.getDefaultToolkit().getScreenSize();

public CameraJFrame()

{

setSize(di);

getContentPane().add(new CameraJPanel());

}

class CameraJPanel extends JPanel implements MouseListener,MouseMotionListener

{

/**

* flag主要是用來判別狀態(tài)。

* 文件的格式名是unname+數字編號,格式是png

*/

private static final long serialVersionUID = 1L;

BufferedImage bi,get;

int startx,starty,endx,endy;

int flag=1;

String filename="unname";

String fileformat="png";

int count=1;

public CameraJPanel()

{

try

{

Robot ro=new Robot();

bi=ro.createScreenCapture(new Rectangle(0,0,di.width,di.height));

}

catch(Exception e)

{

e.printStackTrace();

}

addMouseListener(this);

addMouseMotionListener(this);

}

public void paintComponent(Graphics g)

{

g.drawImage(bi,0,0,di.width,di.height,this);

g.setColor(Color.red);

g.drawRect(startx, starty, endx-startx, endy-starty);

}

public void mouseClicked(MouseEvent e) {

// TODO Auto-generated method stub

if(e.getButton()==MouseEvent.BUTTON3)

{

System.exit(0);

}

else if(e.getClickCount()==2)

{

try

{

Robot ro=new Robot();

get=ro.createScreenCapture(new Rectangle(startx,starty,endx-startx,endy-starty));

String name=filename+String.valueOf(count++)+"."+fileformat;

File f=new File(name);

ImageIO.write(get, fileformat, f);

}

catch(Exception ex)

{

ex.printStackTrace();

}

flag=1; //置flag為1,以便重新開始截圖。

startx=starty=endx=endy=0;

repaint();

}

}

public void mouseEntered(MouseEvent e) {}

public void mouseExited(MouseEvent e) {}

public void mousePressed(MouseEvent e) {

if(flag==1)

{

startx=e.getX();

starty=e.getY();

}

}

public void mouseReleased(MouseEvent e) {

flag=0;

}

public void mouseDragged(MouseEvent e) {

flag=1;

endx=e.getX();

endy=e.getY();

repaint();

}

public void mouseMoved(MouseEvent e) {}

}

}

java截屏有哪幾種方法

前臺方式

1. 利用html2canvas實現前臺截屏

html2canvas項目的gitHub地址

html2canvas示例

html2canvas可以將HTML代碼塊進行截取,并生成快照形式的canvas,然后可以利用html5的下載功能提供圖片的下載接口,供用戶下載。

優(yōu)點:前臺技術,實現比較容易。

缺點:此項目使用了html5的技術,因此在對IE的兼容上,只可以在IE9+的版本上使用。

使用時,需要引用jQuery.js和html2canvas.js。(html2canvas.js可以在github上下載)

具體JavaScript代碼如下:

var canvas = function () {

html2canvas($("#chart"), {

onrendered: function (canvas) {

$("#class11").html(canvas);//將id為“class11”部分的代碼轉換為canvas

var type = 'png';//圖片類型為png

var imgData = canvas.toDataURL('png');//將圖片轉換為png類型的流

var _fixType = function (type) {

type = type.toLowerCase().replace(/jpg/i, 'jpeg'); var r = type.match(/png|jpeg|bmp|gif/)[0]; return 'image/' + r;

}; var saveFile = function (data, filename) {

var save_link = document.createElementNS('', 'a');

save_link.href = data;

save_link.download = filename; var event = document.createEvent('MouseEvents');

event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);

save_link.dispatchEvent(event);

}; //下載時的文件名

var filename = 'baidufe_' + (new Date()).getTime() + '.' + type; // 下載文件

saveFile(imgData, filename);

}

});

后臺方式(java)

1. 利用html2image實現

html2image的地址(google)

html2image是可以識別html標簽并將html轉換成圖片的java項目。

優(yōu)點:后臺轉換,故對瀏覽器的版本基本沒有要求。

缺點:對樣式的識別不是很好,轉換出來的圖片比較簡單,基本沒有可以兼容的樣式。

使用方式:maven中引用如下依賴:

dependency

groupIdcom.github.xuwei-k/groupId

artifactIdhtml2image/artifactId

version0.1.0/version/dependency12345

2. 利用DJNativeSwing項目實現

純java代碼實現。使用DJNativeSwing這個項目,構建一個swing瀏覽器,打開網址,之后截取圖片。(需要eclipse的swt庫支持)

優(yōu)點:純java實現。

缺點:需要多線程的支持,只在控制臺方式實現過(由于本人對于多線程的掌握較弱,目前沒有在spring項目中實現這個方法,求大神指導~~)

3. 利用phantomJs實現

phantomJs的GitHub地址

phantomJs官網

phantom利用的是webKit內核,全面支持web而不需瀏覽器支持,快速,原生支持各種Web標準。

優(yōu)點:速度快,使用簡單。

缺點:需要在項目的服務器端引用exe文件進行截圖,并發(fā)性能有待考證。

Java如何實現截圖功能

下面給你介紹將全屏幕截圖保存到指定目錄下的代碼,希望能對你有幫助:

核心代碼為:snapShot方法中的相關邏輯

package Jietu;

import java.awt.Dimension;

import java.awt.Rectangle;

import java.awt.Robot;

import java.awt.Toolkit;

import java.awt.image.BufferedImage;

import java.io.File;

import javax.imageio.ImageIO;

public class CameraTest {

private String filePreStr; // 默認前綴(選擇存儲路徑例如: D:\\)

private String defName = "cameraImg"; // 默認截圖名稱

static int serialNum = 0; //截圖名稱后面的數字累加

private String imageFormat; // 圖像文件的格式

private String defaultImageFormat = "png"; //截圖后綴

Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); //獲取全屏幕的寬高尺寸等數據

public CameraTest() {

filePreStr = defName;

imageFormat = defaultImageFormat;

}

public CameraTest(String s, String format) {

filePreStr = s;

imageFormat = format;

}

public void snapShot() {

try {

// *** 核心代碼 *** 拷貝屏幕到一個BufferedImage對象screenshot

BufferedImage screenshot = (new Robot()).createScreenCapture(new Rectangle(0, 0, (int) d.getWidth(), (int) d.getHeight()));

serialNum++;

// 根據文件前綴變量和文件格式變量,自動生成文件名

String name = filePreStr + String.valueOf(serialNum) + "." + imageFormat;

File f = new File(name);

System.out.print("Save File " + name);

// 將screenshot對象寫入圖像文件

ImageIO.write(screenshot, imageFormat, f);

System.out.print("..Finished!\n");

} catch (Exception ex) {

System.out.println(ex);

}

}

// 運行之后,即可將全屏幕截圖保存到指定的目錄下面br // 配合前端頁面上面的選擇尺寸等邏輯,傳到后臺,即可實現自由選擇截圖區(qū)域和大小的截圖br

public static void main(String[] args) {

CameraTest cam = new CameraTest("d:\\Hello", "png");//

cam.snapShot();

}

}

分享標題:截屏工具java代碼 截圖代碼編寫
標題鏈接:http://jinyejixie.com/article18/ddojjdp.html

成都網站建設公司_創(chuàng)新互聯,為您提供用戶體驗App設計、標簽優(yōu)化軟件開發(fā)、企業(yè)網站制作、網站內鏈

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

外貿網站建設
浮山县| 宁河县| 河间市| 大理市| 阜新市| 云和县| 胶南市| 监利县| 桦川县| 铜山县| 深水埗区| 太原市| 临洮县| 桑植县| 永丰县| 湘西| 中方县| 柏乡县| 宁远县| 秀山| 澄迈县| 辛集市| 普兰店市| 云南省| 甘泉县| 太仆寺旗| 琼海市| 玛纳斯县| 灵石县| 龙井市| 阳东县| 南川市| 博白县| 衡山县| 巨野县| 方正县| 成安县| 九龙县| 达州市| 宁波市| 新营市|