- 浏览: 27166 次
- 性别:
- 来自: 内蒙古
最新评论
-
java_xiaoD:
我也这个问题 怎么解决的
linux/window下weblogic10.3运行applet报错,Tomcat、weblogic9下运行正常 -
oming:
写的什么这是
StringUtil.java常用字符操作类 -
ll3231:
自己恢复,目前只能用to_char()转换类型的方法弥补了
返回List<HashMap<String,Object>>数据,为什么时间类型只返回了yyyy-MM-dd,没有HH:mm:ss -
kimmking:
BeanUtils.describe
将Object对象的属性(有对应get方法)按照属性名字(key)和对应值(value)放到Map中
package com.util;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.Toolkit;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.CropImageFilter;
import java.awt.image.FilteredImageSource;
import java.awt.image.ImageFilter;
import java.awt.image.WritableRaster;
import java.io.File;
import javax.imageio.ImageIO;
public class ImageUtil {
/**
* 处理图像
*
* @param source
* 原图像
* @param targetW
* 目标宽度
* @param targetH
* 目标高度
* @return 处理完图像(略缩图)
*/
public static BufferedImage resize(BufferedImage source, int targetW,
int targetH) {
// targetW,targetH分别表示目标长和宽
int type = source.getType();
BufferedImage target = null;
double sx = (double) targetW / source.getWidth();
double sy = (double) targetH / source.getHeight();
// 这里想实现在targetW,targetH范围内实现等比缩放。如果不需要等比缩放
// 则将下面的if else语句注释即可
if (sx > sy) {
sx = sy;
targetW = (int) (sx * source.getWidth());
} else {
sy = sx;
targetH = (int) (sy * source.getHeight());
}
if (type == BufferedImage.TYPE_CUSTOM) { // handmade
ColorModel cm = source.getColorModel();
WritableRaster raster = cm.createCompatibleWritableRaster(targetW,
targetH);
boolean alphaPremultiplied = cm.isAlphaPremultiplied();
target = new BufferedImage(cm, raster, alphaPremultiplied, null);
} else {
target = new BufferedImage(targetW, targetH, type);
}
Graphics2D g = target.createGraphics();
// smoother than exlax:
g.setRenderingHint(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY);
g.drawRenderedImage(source, AffineTransform.getScaleInstance(sx, sy));
g.dispose();
return target;
}
/**
* 保存图片
*
* @param fromFileStr
* 来自图片
* @param saveToFileStr
* 保存图片
* @param width
* 保存宽度
* @param hight
* 保存高度
* @throws Exception
* 异常
*/
public static void saveImageAsJpg(String fromFileStr, String saveToFileStr,
int width, int hight) throws Exception {
BufferedImage srcImage;
// String ex =
// fromFileStr.substring(fromFileStr.indexOf("."),fromFileStr.length());
String imgType = "JPEG";
if (fromFileStr.toLowerCase().endsWith(".png")) {
imgType = "PNG";
}
File saveFile = new File(saveToFileStr);
File fromFile = new File(fromFileStr);
srcImage = ImageIO.read(fromFile);
if (width > 0 || hight > 0) {
srcImage = resize(srcImage, width, hight);
}
ImageIO.write(srcImage, imgType, saveFile);
}
/**
* 左右连接2张图片
*
* **/
public static BufferedImage leftJoin(BufferedImage ImageOne,
BufferedImage ImageTwo) {
int width1, width2, height1, height2, height;
try {
width1 = ImageOne.getWidth();// 图片宽度
height1 = ImageOne.getHeight();// 图片高度
width2 = ImageTwo.getWidth();// 图片宽度
height2 = ImageTwo.getHeight();// 图片高度
if (height1 > height2)
height = height1;
else
height = height2;
// 从图片中读取RGB
int[] ImageArrayOne = new int[width1 * height1];
ImageArrayOne = ImageOne.getRGB(0, 0, width1, height1,
ImageArrayOne, 0, width1);
int[] ImageArrayTwo = new int[width2 * height2];
ImageArrayTwo = ImageTwo.getRGB(0, 0, width2, height2,
ImageArrayTwo, 0, width2);
// 生成新图片
BufferedImage ImageNew = new BufferedImage(width1 + width2, height,
BufferedImage.TYPE_INT_RGB);
ImageNew.setRGB(0, 0, width1, height1, ImageArrayOne, 0, width1);// 设置左半部分的RGB
ImageNew
.setRGB(width1, 0, width2, height, ImageArrayTwo, 0, width2);// 设置右半部分的RGB
return ImageNew;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 上下连接2张图片
*
* **/
public static BufferedImage topJoin(BufferedImage ImageOne,
BufferedImage ImageTwo) {
int width1, width2, height1, height2, width;
try {
width1 = ImageOne.getWidth();// 图片宽度
height1 = ImageOne.getHeight();// 图片高度
width2 = ImageTwo.getWidth();// 图片宽度
height2 = ImageTwo.getHeight();// 图片高度
if (width1 > width2)
width = width1;
else
width = width2;
// 从图片中读取RGB
int[] ImageArrayOne = new int[width1 * height1];
ImageArrayOne = ImageOne.getRGB(0, 0, width1, height1,
ImageArrayOne, 0, width1);
int[] ImageArrayTwo = new int[width2 * height2];
ImageArrayTwo = ImageTwo.getRGB(0, 0, width2, height2,
ImageArrayTwo, 0, width2);
// 生成新图片
BufferedImage ImageNew = new BufferedImage(width,
height1 + height2, BufferedImage.TYPE_INT_RGB);
ImageNew.setRGB(0, 0, width1, height1, ImageArrayOne, 0, width1);// 设置上半部分的RGB
ImageNew.setRGB(0, height1, width2, height2, ImageArrayTwo, 0,
width);// 设置下半部分的RGB
return ImageNew;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 图片切割
*
* @param fromImage
* 图片
* @param startX
* 开始x结点(left)
* @param startY
* 开始y结点(top)
* @param w
* 切割宽度
* @param h
* 切割高度
*/
public static BufferedImage cut(BufferedImage fromImage, int startX,
int startY, int w, int h) {
try {
Image img;
ImageFilter cropFilter;
// 读取源图像
int height = fromImage.getHeight();
int width = fromImage.getWidth();
if (width >= w && height >= h) {
Image image = fromImage.getScaledInstance(width, height,
Image.SCALE_DEFAULT);
// 剪切起始坐标点
int x = startX;
int y = startY;
int destWidth = w; // 切片宽度
int destHeight = h; // 切片高度
// 图片比例
double pw = width;
double ph = height;
double m = (double) width / pw;
double n = (double) height / ph;
int wth = (int) (destWidth * m);
int hth = (int) (destHeight * n);
int xx = (int) (x * m);
int yy = (int) (y * n);
// 四个参数分别为图像起点坐标和宽高
// 即: CropImageFilter(int x,int y,int width,int height)
cropFilter = new CropImageFilter(xx, yy, wth, hth);
img = Toolkit.getDefaultToolkit().createImage(
new FilteredImageSource(image.getSource(), cropFilter));
BufferedImage tag = new BufferedImage(w, h,
BufferedImage.TYPE_INT_RGB);
Graphics g = tag.getGraphics();
g.drawImage(img, 0, 0, null); // 绘制缩小后的图
g.dispose();
return tag;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**图片上加文字**/
public static void image_text(BufferedImage tag,String text,Font font, int x, int y) {
Graphics g = tag.getGraphics();
// g.setColor(Color.BLACK); //以下设置前景色
g.setXORMode(Color.GREEN);
g.setFont(font);//new Font("宋体", Font.ITALIC, 24));
g.drawString(text, x, y);
g.dispose();
}
public static void main(String args[]) {
try {
// File f1 = new File("d:\\1.jpg");
// File f2 = new File("d:\\2.jpg");
// BufferedImage img1 = ImageIO.read(f1);
// BufferedImage img2 = ImageIO.read(f2);
// BufferedImage out = leftJoin(img2, img1, 0, 100);
// // out = resize(out, 200, 200);
// File outFile = new File("d:\\out.jpg");
// ImageIO.write(out, "jpg", outFile);// 写图片
File f1 = new File("d:\\3.jpg");
BufferedImage img1 = ImageIO.read(f1);
int height=img1.getHeight();
int width=img1.getWidth();
for(int i=0;i<height;i+=100){
for(int j=0;j<width;j+=100){
BufferedImage tmp=ImageUtil.cut(img1, j, i, 100, 100);
File outFile = new File("d:\\tmp\\"+i+"_"+j+".jpg");
ImageIO.write(tmp, "jpg", outFile);// 写图片
}
}
// img1=ImageUtil.cut(img1, 0, 0, 100, 100);
// File outFile = new File("d:\\out.jpg");
// ImageIO.write(img1, "jpg", outFile);// 写图片
} catch (Exception e) {
e.printStackTrace();
}
}
}
发表评论
-
linux/window下weblogic10.3运行applet报错,Tomcat、weblogic9下运行正常
2011-03-29 23:24 1259Tomcat、weblogic9下运行正常 报错主要信息: ... -
统计淘宝上购买3D和双色球记录程序,自动发送邮件结果
2010-10-30 12:24 2679程序现在已近可以自动运行,运行完毕后可以给指定邮箱 ... -
对象数组中相对于某一个属性的排序
2010-10-25 08:24 836package util; import java.lang ... -
DateUtil.java 通用时间处理类
2010-10-25 08:21 1585package util; import java.text ... -
StringUtil.java常用字符操作类
2010-10-25 08:16 3030package util; import java.io.U ... -
大数据量分页下拉菜单设计
2010-10-25 01:03 1044下拉菜单的数据是1、2 ... -
Struts2中实现JasperReport打印通用模块设计(兼容多种浏览器)
2010-10-25 00:22 2303/** * 报表Applet打印和pdf、xls导出 ... -
将Object对象的属性(有对应get方法)按照属性名字(key)和对应值(value)放到Map中
2010-10-25 00:17 2013/** * 将Object对象的属性(有对应get ... -
导出Excel通用模块设计(修订版)
2010-10-25 00:12 1598/** * 导出Excel文件 * ... -
jre安装失败,手动注册jre
2010-09-19 21:35 5822Windows Registry Editor Version ...
相关推荐
3. **图像缩放与调整**:对于需要跨屏显示的内容,软件能自动处理图像的缩放和定位,确保画面在多个屏幕间平滑过渡。 4. **多窗口显示**:支持在同一拼接屏上同时显示多个窗口,每个窗口可以显示不同的内容,实现...
拼接屏系统的核心设备包括各种类型解码器,负责接收控制指令,并对视频信号进行处理,如显示、缩放、分割、漫游和拼接等功能。但由于其品牌和型号众多,没有统一标准协议,难以实现统一管理和控制,影响用户体验。 ...
5. **myCtrl.GroupCtrl.dll**:这可能是一个自定义的控制模块,专门用于处理多屏拼接控制的逻辑,比如组屏管理、窗口漫游、画中画等高级功能。 这些文件共同构成了液晶拼接控制软件的核心组成部分,提供了丰富的...
5. **拼接处理**:根据找到的匹配位置,对多张图片进行几何变换(如旋转、缩放、平移),使它们能够正确地拼接在一起。 实现这一过程通常会涉及到OpenCV、PIL等Python图像处理库。在`app.py`和`test.py`中,可能...
【标题】: 拼接屏控制软件通用性分析及控制强化 【描述】: 本文探讨了拼接屏控制软件的通用性问题,并强调了通用控制的重要性,特别是在相关行业的应用中。 【标签】: 计算机 【正文】: 拼接屏控制软件在现代...
5. **图片处理**:图片的压缩、缩放、裁剪等,优化内存占用和显示效果。 6. **网络请求辅助**:提供URL编码、HTTP请求参数构建等辅助函数,简化网络请求的准备工作。 7. **JSON序列化与反序列化**:快速将字典或...
这些特征匹配方法在处理旋转、缩放等变换时表现良好,但仍有改进空间,以适应更复杂的图像拼接环境。 总的来说,图像拼接技术是一个涵盖多个层面的复杂问题,需要在特征提取、配准策略、融合规则等方面不断优化,以...
标题中的“基于SURF的图像拼接”是一个关于计算机视觉领域的技术话题,主要涉及的是图像处理和特征检测。SURF(Speeded Up Robust Features)是SIFT(Scale-Invariant Feature Transform)的一种快速版本,由荷兰TUE...
仿射变换是一种更为通用的线性变换,它可以实现图像的旋转、缩放、剪切和平移操作,适用于复杂场景下的图像配准。 #### 四、插值(Interpolators) 插值是图像配准过程中一个重要的环节,用于计算变换后图像的新位置...
- 内置处理单元:处理视频信号的解码、缩放、拼接等功能。 - 电源部分:提供稳定的工作电压,确保控制器正常运行。 **二、安全操作指南** 在安装、使用和维护BR-VPII拼接控制器时,遵循以下安全注意事项至关重要,...
在这个名为“Unity 通用的一些图片”的压缩包中,我们可能找到了一些在Unity项目中常用到的图像资源,如ICON(图标)和背景图。这些图像对于构建用户界面(UI)、游戏场景或应用程序的视觉效果至关重要。 首先,...
在图像处理领域,图像拼接是一项重要的技术,它主要用于将多张视角相近或者覆盖部分重叠的图片合并成一张全景图。"基于SIFT特征点及RANSAC筛选的图像拼接"是一个利用计算机视觉技术实现图像融合的系统,其核心在于...
系统中的多路视频信号通过业务单板进行处理,包括视频缩放、视频叠加、视频格式转换等。之后,处理后的信号通过业务背板总线传送给主控板上的FPGA信号处理系统。FPGA系统负责视频图像的局部补偿和校正,再将处理后的...
- 图片处理可能涉及到缩放、裁剪、旋转、颜色转换等功能。Android提供了`Bitmap`类进行基本操作,而` Glide`、`Picasso`或` Fresco`等库则更加强大。 - 例如:`ImageUtil`类可能包含`compressImage()`用于压缩图片...
7. **PicDeal.cs**:图片处理类,可能包含图片的上传、缩放、裁剪、旋转等图像操作功能,常用于网站的图像展示和管理。 8. **UrlOper.cs**:URL操作类,可能包括URL编码解码、参数解析、构建URL等方法,对于处理...
2. **图片处理**:缩放、裁剪、旋转、调整亮度对比度等图像处理操作,常用于图片预览、上传等场景。 3. **图片转换**:将图片转换为二进制流或Base64编码,便于在网络传输中使用。 总结起来,"jutils-master"压缩包...
图像拼接是摄影测量学、计算机视觉、图像处理和计算机图形学领域的一个活跃的研究方向。它是一种从不同视角获得的局部图像序列构造全景图像马赛克的过程。图像拼接的初始应用主要集中在从一系列图像构建大型航空和...
7. **PicDeal.cs** - 图像处理类,用于处理图片的读取、保存、缩放、裁剪、旋转等操作,可以用于图像处理或图形设计的场景。 8. **UrlOper.cs** - URL操作类,可能提供了URL解析、拼接、编码解码等方法,常用于处理...
2. **BitmapUtil**: 用于图片处理,包括压缩图片大小、裁剪图片、转换图片格式等功能。在内存有限的移动设备上,有效地管理和处理图片至关重要,BitmapUtil能帮助我们避免内存溢出问题。 3. **DateUtil**: 时间日期...
8. **图片处理工具类** (ImageUtil) 包含图片的加载、压缩、裁剪、缩放等方法,尤其在处理用户上传的图片或者加载网络图片时非常实用。 9. **对话框工具类** (DialogUtil) 可以快速创建和展示各种类型的对话框,...