重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
import java.awt.Color;
10余年的松岭网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网整合营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整松岭建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“松岭网站设计”,“松岭网站推广”以来,每个客户项目都认真落实执行。
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class Test{
public static void main(String[] args){
try {
File f1 = new File("a.jpg");
BufferedImage image = ImageIO.read(f1);
Graphics g = image.getGraphics();
g.setFont(new Font("Serif",Font.BOLD,20));
g.setColor(Color.red);
g.drawString("happy new year!", 10, 20);
File f2 = new File("copy.jpg");
ImageIO.write(image, "JPEG", f2);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Point2D.java
/**
* Title: Point2D.javabr
* Description:
*
* @author 王凯芳
* @date 2020年3月5日 下午7:09:35
* @version 1.0
*/
public class Point2D {
protected float x;
protected float y;
public Point2D() {
super();
}
public Point2D(float x, float y) {
super();
this.x = x;
this.y = y;
}
public float getX() {
return x;
}
public void setX(float x) {
this.x = x;
}
public float getY() {
return y;
}
public void setY(float y) {
this.y = y;
}
public float[] getXY() {
return new float[] { x, y };
}
public void setXY(float x, float y) {
this.x = x;
this.y = y;
}
@Override
public String toString() {
return "(" + x + "," + y + ")";
}
}
Point3D.java
/**
* Title: Point3D.javabr
* Description:
*
* @author 王凯芳
* @date 2020年3月5日 下午7:09:35
* @version 1.0
*/
public class Point3D extends Point2D {
private float z;
public Point3D() {
super();
}
public Point3D(float x, float y, float z) {
super();
this.x = x;
this.y = y;
this.z = z;
}
public float getZ() {
return z;
}
public void setZ(float z) {
this.z = z;
}
public float[] getXYZ() {
return new float[] { x, y, z };
}
public void setXYZ(float x, float y, float z) {
this.x = x;
this.y = y;
this.z = z;
}
@Override
public String toString() {
return "(" + x + "," + y + "," + z + ")";
}
}
很简单。
可以手写IO读写(有点麻烦)。
怕麻烦的话使用FileUpload组件 在servlet里doPost嵌入一下代码
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
response.setContentType("text/html;charset=gb2312");
PrintWriter out=response.getWriter();
//设置保存上传文件的目录
String uploadDir =getServletContext().getRealPath("/up");
System.out.println(uploadDir);
if (uploadDir == null)
{
out.println("无法访问存储目录!");
return;
}
//根据路径创建一个文件
File fUploadDir = new File(uploadDir);
if(!fUploadDir.exists()){
if(!fUploadDir.mkdir())//如果UP目录不存在 创建一个 不能创建输出...
{
out.println("无法创建存储目录!");
return;
}
}
if (!DiskFileUpload.isMultipartContent(request))
{
out.println("只能处理multipart/form-data类型的数据!");
return ;
}
DiskFileUpload fu = new DiskFileUpload();
//最多上传200M数据
fu.setSizeMax(1024 * 1024 * 200);
//超过1M的字段数据采用临时文件缓存
fu.setSizeThreshold(1024 * 1024);
//采用默认的临时文件存储位置
//fu.setRepositoryPath(...);
//设置上传的普通字段的名称和文件字段的文件名所采用的字符集编码
fu.setHeaderEncoding("gb2312");
//得到所有表单字段对象的集合
List fileItems = null;
try
{
fileItems = fu.parseRequest(request);//解析request对象中上传的文件
}
catch (FileUploadException e)
{
out.println("解析数据时出现如下问题:");
e.printStackTrace(out);
return;
}
//处理每个表单字段
Iterator i = fileItems.iterator();
while (i.hasNext())
{
FileItem fi = (FileItem) i.next();
if (fi.isFormField()){
String content = fi.getString("GB2312");
String fieldName = fi.getFieldName();
request.setAttribute(fieldName,content);
}else{
try
{
String pathSrc = fi.getName();
if(pathSrc.trim().equals("")){
continue;
}
int start = pathSrc.lastIndexOf('\\');
String fileName = pathSrc.substring(start + 1);
File pathDest = new File(uploadDir, fileName);
fi.write(pathDest);
String fieldName = fi.getFieldName();
request.setAttribute(fieldName, fileName);
}catch (Exception e){
out.println("存储文件时出现如下问题:");
e.printStackTrace(out);
return;
}
finally //总是立即删除保存表单字段内容的临时文件
{
fi.delete();
}
}
}
注意 JSP页面的form要加enctype="multipart/form-data" 属性, 提交的时候要向服务器说明一下 此页面包含文件。
如果 还是麻烦,干脆使用Struts 的上传组件 他对FileUpload又做了封装,使用起来更傻瓜化,很容易掌握。
-----------------------------
以上回答,如有不明白可以联系我。
package junit test;
import java awt image BufferedImage;
import java io File;
import URL;
import javax imageio ImageIO;
import java util *;
public class Test {
public static void main(String [] args)
{
try {
//本地地址或URL 的图片
//BufferedImage bi = ImageIO read(new URL( ));
BufferedImage bi = ImageIO read(new File( D:\\ jpg ));
//截取任意区域的图片
//BufferedImage subimg = bi getSubimage( );
int width = bi getWidth();
int height = bi getHeight();
System out println( w: +width);
System out println( h: +height);
int [][]datas = new int[width][height];
int [][]datastmp = new int[width][height];
for(int i = ;i height;i++)
{
for(int j = ;jwidth;j++)
{
datas[j][i]= bi getRGB(j i);
datastmp[j][i]= bi getRGB(j i);
System out print( bi getRGB(j i)+ );
}
System out println();
}
int [][] xz = XZ(datas width height );
for(int i = ;i height;i++)
{
for(int j = ;jwidth;j++)
{
bi setRGB(j i xz[j][i]);
}
}
ImageIO write(bi JPEG new File( D:\\ jpg ));
}
/***
* 图片旋转数据处理
* @param datas
* @param width
* @param height
* @param FX 为上下反转 为左右反转
* @return
*/
public static int [][] XZ(int [][] datas int width int height int FX)
{
try {
int[][] tmps= new int [width][height];
if(FX== )
{
for(int i = a=height ;i height;i++ a )
{
for(int j = b=width ;jwidth;j++ b )
{
tmps[b][a] = datas[j][i];
}
}
}
else if (FX== )
{
for(int i = ;i height;i++)
{
for(int j = b=width ;jwidth;j++ b )
{
tmps[b][i] = datas[j][i];
}
}
}
return tmps;
} catch (Exception e) {
// TODO: handle exception
System out println( ex: +e getMessage());
return null;
}
lishixinzhi/Article/program/Java/hx/201311/25710
javaweb平面图实现的话需要用java的applet即可。
拓展资料:
(IDEA和Eclipse上均可运行)
设计一个简易地图(类似房间平面图),图上标有多个检测区域(下面已标注要检测哪五个),区域上显示当前的检测数值和状态(红,黄,绿)。
点击检测区域,弹出对话框,对话框中内容包括:
检测数值的实时曲线,可能有多个(实时的意思是要显示检测区域部分的后端数据,以echarts的曲线图形式展示)
同时,也可以用表格的方式,显示上述检测数值,同时表格数据可以导出EXCEL格式文件
检测区域的对话框可以同时显示(非模态方式),也可以只能单一显示(模态方式)(不使用数据库调用,只用表格)
客户端的所有请求(如:温度等的数值记录)都通过服务端的TOMCAT上的java程序实现4.服务端编写所有请求的实现过程,以JSON格式方式返回请求内容
多行显示不同的检测内容,把状态按钮调到每行的前面作为各自的状态(红黄绿三种)。
检测区域:
厨房:一氧化碳浓度,温度
主卧:温度,湿度,噪声
阳台:温度,湿度,风力
餐厅:温度,湿度,光亮
主卫:温度,湿度