本文目录一览:
- 1、java 图片缩放代码
- 2、java根据url获取网页缩略图
- 3、有人知道java生成缩略图的方法吗 thumbnailator有问题
- 4、Java编程:怎么获得一个视频的缩略图呢?
- 5、java JFileChooser选择图片时,如何可以看到图片缩略图,从而进行选择?
- 6、java 生成缩略图保存数据库
java 图片缩放代码
直接给你一个类,直接套用就好了
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.WritableRaster;
import java.io.File;
import javax.imageio.ImageIO;
public class Resize {
BufferedImage bufImage;
int width;
int height;
public Resize() {
// TODO Auto-generated constructor stub
}
public Resize(String srcPath,int width,int height) {
this.width = width;
this.height = height;
try{
this.bufImage = ImageIO.read(new File(srcPath));
}catch(Exception e){
e.printStackTrace();
}
}
public static BufferedImage rize(BufferedImage srcBufImage,int width,int height){
BufferedImage bufTarget = null;
double sx = (double) width / srcBufImage.getWidth();
double sy = (double) height / srcBufImage.getHeight();
int type = srcBufImage.getType();
if(type == BufferedImage.TYPE_CUSTOM){
ColorModel cm = srcBufImage.getColorModel();
WritableRaster raster = cm.createCompatibleWritableRaster(width,
height);
boolean alphaPremultiplied = cm.isAlphaPremultiplied();
bufTarget = new BufferedImage(cm, raster, alphaPremultiplied, null);
}else
bufTarget = new BufferedImage(width, height, type);
Graphics2D g = bufTarget.createGraphics();
g.setRenderingHint(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY);
g.drawRenderedImage(srcBufImage, AffineTransform.getScaleInstance(sx, sy));
g.dispose();
return bufTarget;
}
}
java根据url获取网页缩略图
代码如下:
public static Bitmap
loadImageFromUrl(String url, int sc) {
URL m;
InputStream
i = null;
BufferedInputStream bis = null;
ByteArrayOutputStream out = null;
byte isBuffer[] = new
byte[1024];
if (url == null)
return null;
try {
m = new URL(url);
i = (InputStream)
m.getContent();
bis = new BufferedInputStream(i, 1024 * 4);
out =
new ByteArrayOutputStream();
int len = 0;
while
((len = bis.read(isBuffer)) != -1) {
out.write(isBuffer, 0,
len);
}
out.close();
bis.close();
} catch (MalformedURLException e1) {
e1.printStackTrace();
return null;
} catch
(IOException e) {
e.printStackTrace();
}
if
(out == null)
return null;
byte[] data =
out.toByteArray();
BitmapFactory.Options options = new
BitmapFactory.Options();
options.inJustDecodeBounds =
true;
BitmapFactory.decodeByteArray(data, 0, data.length,
options);
options.inJustDecodeBounds = false;
int be =
(int) (options.outHeight / (float) sc);
if (be = 0)
{
be = 1;
} else if (be 3) {
be =
3;
}
options.inSampleSize = be;
Bitmap bmp =
null;
try {
bmp = BitmapFactory.decodeByteArray(data,
0, data.length, options); // 返回缩略图
} catch (OutOfMemoryError e)
{
// TODO: handle exception
System.gc();
bmp = null;
}
return
bmp;
}
有人知道java生成缩略图的方法吗 thumbnailator有问题
自己写了一个,看看能不能有
/**
* 本类实现一个对JPG/JPEG图像文件进行缩放处理的方法:即给定一个JPG文件,可以生成一个该JPG文件的缩影图像文件(JPG格式)br/
* 提供三种生成缩影图像的方法:br/
* 1.设置缩影文件的宽度, 根据设置的宽度和源图像文件的大小来确定新缩影文件的长度来生成缩影图像br/
* 2.设置缩影文件的长度, 根据设置的长度和源图像文件的大小来确定新缩影文件的宽度来生成缩影图像br/
* 3.设置缩影文件相对于源图像文件的比例大小, 根据源图像文件的大小及设置的比例来确定新缩影文件的大小来生成缩影图像br/
* 新生成的缩影图像可以比原图像大, 这时即是放大源图像br/
*
* @author 不落的太阳(Sean Yang)
* @version 1.0
* @since JDK 1.8
*
*/
public class ImageScalingTool {
// 对象是否己经初始化
private boolean isInitFlag = false;
// 定义生目标图片的宽度和高度, 给其一个就可以了
private int targetPicWidth = 0;
private int targetPicHeight = 0;
// 定义目标图片的相比原图片的比例
private double picScale = 0;
/**
* 构造函数
*/
public ImageScalingTool() {
isInitFlag = false;
}
/**
* 重置JPG图片缩放器
*/
public void resetImageScaling() {
picScale = 0;
targetPicWidth = 0;
targetPicHeight = 0;
isInitFlag = false;
}
/**
* 设置目标图片相对于源图片的缩放比例
*
* @param scale
* @throws JPEGException
*/
public void setPicScale(double scale) throws Exception {
if (scale = 0) {
throw new RuntimeException(" 缩放比例不能为0和负数! ");
}
resetImageScaling();
picScale = scale;
isInitFlag = true;
}
/**
* 设置目标图片的宽度
*
* @param width
* @throws JPEGException
*/
public void setSmallWidth(int width) throws Exception {
if (width = 0) {
throw new RuntimeException(" 缩影图片的宽度不能为 0 和负数! ");
}
resetImageScaling();
targetPicWidth = width;
isInitFlag = true;
}
/**
* 设置目标图片的高度
*
* @param height
* @throws JPEGException
*/
public void setSmallHeight(int height) throws Exception {
if (height = 0) {
throw new RuntimeException(" 缩影图片的高度不能为 0 和负数! ");
}
resetImageScaling();
targetPicHeight = height;
isInitFlag = true;
}
/**
* 开始缩放图片
*
* @param srcPicFileName
* 源图片的文件名
* @param targetPicFileName
* 生成目标图片的文件名
* @throws JPEGException
*/
public void transform(String srcPicFileName, String targetPicFileName) throws Exception {
if (!isInitFlag) {
throw new RuntimeException(" 对象参数没有初始化! ");
}
if (srcPicFileName == null || targetPicFileName == null) {
throw new RuntimeException(" 包含文件名的路径为空! ");
}
if ((!srcPicFileName.toLowerCase().endsWith("jpg")) (!srcPicFileName.toLowerCase().endsWith("jpeg"))) {
throw new RuntimeException(" 只能处理 JPG/JPEG 文件! ");
}
if ((!targetPicFileName.toLowerCase().endsWith("jpg")) !targetPicFileName.toLowerCase().endsWith("jpeg")) {
throw new RuntimeException(" 只能处理 JPG/JPEG 文件! ");
}
// 新建源图片和生成图片的文件对象
File fin = new File(srcPicFileName);
File fout = new File(targetPicFileName);
// 通过缓冲读入源图片文件
BufferedImage sourceImage = null;
try {
// 读取文件生成BufferedImage
sourceImage = ImageIO.read(fin);
} catch (IOException ex) {
throw new RuntimeException(" 读取源图像文件出错! ");
}
// 源图片的宽度和高度
int sourceWidth = sourceImage.getWidth();
int sourceHeight = sourceImage.getHeight();
// 设置目标图片的实际宽度和高度
int targetWidth = 0;
int targetHeight = 0;
if (targetPicWidth != 0) {
// 根据设定的宽度求出长度
targetWidth = targetPicWidth;
targetHeight = (targetWidth * sourceHeight) / sourceWidth;
} else if (targetPicHeight != 0) {
// 根据设定的长度求出宽度
targetHeight = targetPicHeight;
targetWidth = (targetHeight * sourceWidth) / sourceHeight;
} else if (picScale != 0) {
// 根据设置的缩放比例设置图像的长和宽
targetWidth = (int) (sourceWidth * picScale);
targetHeight = (int) (sourceHeight * picScale);
} else {
throw new RuntimeException(" 对象参数初始化不正确! ");
}
System.out.println(" 源图片的分辨率: " + sourceWidth + "×" + sourceHeight);
System.out.println(" 目标图片的分辨率: " + targetWidth + "×" + targetHeight);
// 目标图像的缓冲对象
BufferedImage targetImage = new BufferedImage(targetWidth, targetHeight, BufferedImage.TYPE_3BYTE_BGR);
// 求得目标图片与源图片宽度, 高度的比例.
double scaleWidth = (double) targetWidth / sourceWidth;
double scaleHeight = (double) targetHeight / sourceHeight;
// 构造图像变换对象
AffineTransform transform = new AffineTransform();
// 设置图像转换的比例
transform.setToScale(scaleWidth, scaleHeight);
// 构造图像转换操作对象
AffineTransformOp ato = new AffineTransformOp(transform, null);
// 实现转换, 将bSrc转换成bTarget
ato.filter(sourceImage, targetImage);
// 输出目标图片
try {
// 将目标图片的BufferedImage写到文件中去, jpeg为图片的格式
ImageIO.write(targetImage, "jpeg", fout);
} catch (IOException ex1) {
throw new Exception(" 写入缩略图像文件出错! ");
}
}
}
Java编程:怎么获得一个视频的缩略图呢?
如果本地视频的话,可以通过Runtime类的exec方法调用ffmpeg来实现
ffmpeg是视频转码,截图的程序,我这里有
java JFileChooser选择图片时,如何可以看到图片缩略图,从而进行选择?
菜单栏(后退那一排)最后面有个查看,那里面点击缩略图,即可看到从而选择幻灯片,缩略图等
java 生成缩略图保存数据库
用上传的图片先生成一个小的缩略图,然后读入缩略图, 步骤跟你现在的步骤一样.
生成缩略图的代码你从网上搜索下. 我的代码就不给你了. 呵呵