|
篇一:Android教程获取SD卡视频文件缩略图
Android教程获取SD卡视频文件缩略图
Java代码
?
?
?
?
?
?
?
?
? privateBitmapcreateVideoThumbnail(StringfilePath){ Bitmapbitmap=null; MediaMetadataRetrieverretriever=newMediaMetadataRetriever(); try{ retriever.setMode(MediaMetadataRetriever.MODE_CAPTURE_FRAME_ONLY); retriever.setDataSource(filePath); bitmap=retriever.captureFrame(); }catch(IllegalArgumentExceptionex){ //Assumethisisacorruptvideofile
?? }catch(RuntimeExceptionex){
?? //Assumethisisacorruptvideofile.
?? }finally{
?? try{
?? retriever.release();
?? }catch(RuntimeExceptionex){
?? //Ignorefailureswhilecleaningup.
?? }
?? }
?? returnbitmap;
?? }
??
?? privatevoidgetVideoFile(finalList<videoItem>list)
?? {
?? Bitmapbitmap=null;
??
?? ContentResolvermContentResolver=this.getContentResolver(); ?? Cursorcursor=mContentResolver.query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,null,
?? null,null,MediaStore.Video.DEFAULT_SORT_ORDER);
??
??
??
?? if(cursor.moveToFirst())
?? {
?? do{
?? //ID:MediaStore.Audio.Media._ID
?? intid=cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media._ID));
??
?? //名称:MediaStore.Audio.Media.TITLE
?? Stringtilte=cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.TITLE));
??
?? //专辑名:MediaStore.Audio.Media.ALBUM
?? Stringalbum=cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Vid
eo.Media.ALBUM));
??
??
?? //歌手名:MediaStore.Audio.Media.ARTIST
?? Stringartist=cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.ARTIST));
??
?? //路径:MediaStore.Audio.Media.DATA
?? Stringurl=cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA));
??
?? //总播放时长:MediaStore.Audio.Media.DURATION
?? intduration=cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATION));
??
?? //大小:MediaStore.Audio.Media.SIZE
?? intsize=(int)cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.SIZE));
??
?? //拍摄时间
?? intdateTaken=cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATE_TAKEN));
?? Stringdatetime=DateFormat.format("yyyy-MM-ddkk:mm:ss",dateTaken).toString();
??
?? bitmap=createVideoThumbnail(url);
??
?? }
MediaMetadataRetriever.Java 应放在工程的: Android.media 下面
篇二:融合视觉内容分析的网络视频缩略图推荐
龙源期刊网 .cn
融合视觉内容分析的网络视频缩略图推荐 作者:张维刚 王祯骏 黄庆明 高文
来源:《智能计算机与应用》2014年第03期
收稿日期:2014-04-18
基金项目:国家重点基础研究发展计划(973)(2012CB316400);国家自然科学基金(61025011, 61332016, 61202322)。
作者简介:张维刚(1980- ),男,湖北咸宁人,博士研究生,讲师,主要研究方向:多媒体计算、视频分析与检索;
王祯骏(1990- ),男,安徽黄山人,硕士研究生,主要研究方向:多媒体计算;
黄庆明(1965- ),男,黑龙江哈尔滨人,博士,教授,博士生导师,主要研究方向:多媒体计算、模式识别等;
高文(1956- ),男,辽宁大连人,博士,教授,博士生导师,中国工程院院士,主要研究方向:数字视频编码、多媒体计算、模式识别与多模态人机交互等。
摘要:视频在网站上呈现时,最先映入眼帘的都是一幅静态的封面图像——视频缩略图。主题明确且图像易见的视频缩略图,能让用户在预览时更容易、更快捷地抓住视频主题信息,提高该视频的吸引力,获得更多的点击量和提升用户的浏览体验及观看兴趣。本文针对网络视频缩略图的推荐,在视觉内容分析基础上,通过融合图像易获取性评价和视频内容代表性评价来获得缩略图推荐结果。在网络视频数据集上实施的主客观评价实验表明,本文方法所推荐的视频缩略图与原有人工标注的缩略图相比,有着较好的一致性,能够满足实际应用的需求。 关键词:视频缩略图; 图像易获取性; 视频内容代表性; 支持向量回归
中图分类号:TP3914文献标识码:A文章编号:2095-2163(2014)03-0005-06 Web Video Thumbnail Recommendation by Visual Content Analysis
ZHANG Weigang1, WANG Zhenjun2, HUANG Qingming2, GAO Wen1, 3
(1 School of Computer Science and Technology, Harbin Institute of Technology, Harbin 150001, China;
2 School of Computer and Control, University of Chinese Academy of Sciences, Beijing 100049, China;
篇三:java 生成图片缩略图
java 生成图片缩略图 方法一:
import javax.imageio.ImageIO;
import javax.imageio.IIOException;
import java.awt.image.BufferedImage;
import java.awt.Image;
import java.io.File;
import java.awt.image.AffineTransformOp;
import java.awt.geom.AffineTransform;
public class bbb {
public static void main (String argv[]) {
try {
File fi = new File("c:/image2.jpg"); //大图文件
File fo = new File("c:/imgTest.jpg"); //将要转换出的小图文件
int nw = 100;
/*
AffineTransform 类表示 2D 仿射变换,它执行从 2D 坐标到其他 2D
坐标的线性映射,保留了线的“直线性”和“平行性”。可以使用一系
列平移、缩放、翻转、旋转和剪切来构造仿射变换。
*/
AffineTransform transform = new AffineTransform();
BufferedImage bis = ImageIO.read(fi); //读取图片
int w = bis.getWidth();
int h = bis.getHeight();
//double scale = (double)w/h;
int nh = (nw*h)/w ;
double sx = (double)nw/w;
double sy = (double)nh/h;
transform.setToScale(sx,sy); //setToScale(double sx, double sy) 将此变换设置为缩放变换。
System.out.println(w + " " +h);
/*
* AffineTransformOp类使用仿射转换来执行从源图像或 Raster 中 2D 坐标到目标图像或 * Raster 中 2D 坐标的线性映射。所使用的插值类型由构造方法通过
* 一个 RenderingHints 对象或通过此类中定义的整数插值类型之一来指定。
如果在构造方法中指定了 RenderingHints 对象,则使用插值提示和呈现
的质量提示为此操作设置插值类型。要求进行颜色转换时,可以使用颜色
呈现提示和抖动提示。 注意,务必要满足以下约束:源图像与目标图像
必须不同。 对于 Raster 对象,源图像中的 band 数必须等于目标图像中
的 band 数。
*/
AffineTransformOp ato = new AffineTransformOp(transform,null);
BufferedImage bid = new BufferedImage(nw,nh,BufferedImage.TYPE_3BYTE_BGR); /*
* TYPE_3BYTE_BGR 表示一个具有 8 位 RGB 颜色分量的图像,
* 对应于 Windows 风格的 BGR 颜色模型,具有用 3 字节存
* 储的 Blue、Green 和 Red 三种颜色。
*/
ato.filter(bis,bid);
ImageIO.write(bid,"jpeg",fo);
} catch(Exception e) {
e.printStackTrace();
}
}
}
方法二:
import java.io.*;import java.awt.*;
import java.awt.image.*;import com.sun.image.codec.jpeg.*;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c)2007-6-13</p>
* <p>Company: fuen</p>
* @author 杨振朋
* @version 1.0
*/
public class ccc {
private String srcFile;
private String destFile;
private int width;
private int height;
private Image img;
/**
* 构造函数
* @param fileName String
* @throws IOException
*/
public ccc(String fileName) throws IOException {
File _file = new File(fileName); //读入文件
this.srcFile = _file.getName();
this.destFile = "c:/aa.jpg";//this.srcFile.substring(0, this.srcFile.lastIndexOf(".")) +"_s.jpg";
img = javax.imageio.ImageIO.read(_file); //构造Image对象
width = img.getWidth(null); //得到源图宽
height = img.getHeight(null); //得到源图长
}/**
* 强制压缩/放大图片到固定的大小
* @param w int 新宽度
* @param h int 新高度
* @throws IOException
*/
public void resize(int w, int h) throws IOException {
BufferedImage _image = new BufferedImage(w, h,BufferedImage.TYPE_INT_RGB);_image.getGraphics().drawImage(img, 0, 0, w, h, null); //绘制缩小后的图
FileOutputStream newimageout = new FileOutputStream(destFile); //输出到文件流/*
* JPEGImageEncoder 将图像缓冲数据编码为 JPEG 数据流。该接口的用户应在 Raster * 或 BufferedImage 中提供图像数据,在 JPEGEncodeParams 对象中设置必要的参数, * 并成功地打开 OutputStream(编码 JPEG 流的目的流)。JPEGImageEncoder 接口可 * 将图像数据编码为互换的缩略 JPEG 数据流,该数据流将写入提供给编码器的 OutputStream 中。
注意:com.sun.image.codec.jpeg 包中的类并不属于核心 Java API。它们属于 Sun 发布的
JDK 和 JRE 产品的组成部分。虽然其它获得许可方可能选择发布这些类,但开发人员不能寄
希望于从非 Sun 实现的软件中得到它们。我们期望相同的功能最终可以在核心 API 或标准扩
展中得到。
*/
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimageout);
encoder.encode(_image); //近JPEG编码
newimageout.close();
}/**
* 按照固定的比例缩放图片
* @param t double 比例
* @throws IOException
*/
public void resize(double t) throws IOException {
int w = (int) (width * t);
int h = (int) (height * t);
resize(w, h);
}/**
* 以宽度为基准,等比例放缩图片
* @param w int 新宽度
* @throws IOException
*/
public void resizeByWidth(int w) throws IOException {int h = (int) (height * w / width);
resize(w, h);
}/**
* 以高度为基准,等比例缩放图片
* @param h int 新高度
* @throws IOException
*/
public void resizeByHeight(int h) throws IOException {int w = (int) (width * h / height);
resize(w, h);
}/**
* 按照最大高度限制,生成最大的等比例缩略图
* @param w int 最大宽度
* @param h int 最大高度
* @throws IOException
*/
public void resizeFix(int w, int h) throws IOException {if (width / height > w / h) {
resizeByWidth(w);
}
else {
resizeByHeight(h);
}
}/**
* 设置目标文件名
* setDestFile
* @param fileName String 文件名字符串
*/
public void setDestFile(String fileName) throws Exception {if (!fileName.endsWith(".jpg")) {
throw new Exception("Dest File Must end with ".jpg".");}
destFile = fileName;
}/**
* 获取目标文件名
* getDestFile
*/
public String getDestFile() {
return destFile;
}/**
* 获取图片原始宽度
* getSrcWidth
*/
public int getSrcWidth() {
return width;
}
/**
* 获取图片原始高度
* getSrcHeight
*/
public int getSrcHeight() {
return height;
}
/*
* 调用测试
*/
public static void main(String[] args) throws Exception { ccc ccc = new ccc("c:/image2.jpg");
ccc.resizeFix(500, 300);
}
}
《java获取优酷等视频缩略图》出自:百味书屋
链接地址:http://www.850500.com/news/69855.html
转载请保留,谢谢! |
|