java 获取mp3 封面_java如何获取.mp3格式文件内置歌曲封面
展开全部
封面就是图片,62616964757a686964616fe59b9ee7ad9431333337616466用java的类抓取图片即可package tool;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.LinkedList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import javax.swing.SwingUtilities;
import javax.swing.text.Style;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyleContext;
import javax.swing.text.StyledDocument;
public class ImageViewer extends JFrame
{
private static final long serialVersionUID = 1L;
private static final String DOWNLOADPATH = "download/";
JTextPane textPane = new JTextPane ();
LinkedList initString = new LinkedList ();
LinkedList initStyles = new LinkedList ();
LinkedList path = new LinkedList ();
public ImageViewer ()
{
setTitle ("图片预览下载器 v1.0");
setLayout (new BorderLayout ());
setSize (500, 300);
setLocationRelativeTo (null);
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
}
private void addComponents ()
{
final JTextField urltField = new JTextField ();
JPanel right = new JPanel (new FlowLayout (FlowLayout.RIGHT, 0, 0));
final JButton go = new JButton ("GO");
textPane.setEditable (false);
JScrollPane content = new JScrollPane (textPane);
go.addActionListener (new ActionListener ()
{
@Override
public void actionPerformed ( ActionEvent e )
{
String url = urltField.getText ().trim ();
resolveHTML (url, "utf8", "(?i)\\]*src[\\=\\s\'\"]+([^\\>\'\"]+)[\'\"]?[^\\>]*\\>");
}
});
JPanel up = new JPanel (new BorderLayout ());
up.add (urltField, BorderLayout.CENTER);
right.add (go);
JButton download = new JButton ("DOWNLOAD");
download.addActionListener (new ActionListener ()
{
@Override
public void actionPerformed ( ActionEvent e )
{
downloadImages ();
}
});
right.add (download);
up.add (right, BorderLayout.EAST);
add (up, BorderLayout.NORTH);
add (content, BorderLayout.CENTER);
}
private void downloadImages ()
{
File fp = new File (DOWNLOADPATH);
if (!fp.exists ())
{
fp.mkdir ();
}
for ( int i = 0; i
{
try
{
String p = path.get (i);
URL url = new URL (p);
HttpURLConnection huc = (HttpURLConnection) url.openConnection ();
huc.setRequestMethod ("GET");
huc.setConnectTimeout (5 * 1000);
InputStream is = huc.getInputStream ();
ByteArrayOutputStream baos = new ByteArrayOutputStream ();
byte[] buffer = new byte[1024];
int len = -1;
while (( len = is.read (buffer) ) != -1)
{
baos.write (buffer, 0, len);
}
baos.flush ();
baos.close ();
is.close ();
huc.disconnect ();
byte[] data = baos.toByteArray ();
String name = p.substring (p.lastIndexOf ("/") + 1, p.length ());
name = name.contains (".") ? name : name + ".jpg";
FileOutputStream fos = new FileOutputStream (new File (DOWNLOADPATH + name));
fos.write (data);
fos.flush ();
fos.close ();
}
catch (Exception e)
{
continue;
}
}
}
private void loadImages ( List initString, List initStyles, List url )
{
try
{
StyledDocument doc = textPane.getStyledDocument ();
doc.remove (0, doc.getLength ());
addStylesToDocument (doc, url, initStyles);
for ( int i = 0; i
{
doc.insertString (doc.getLength (), initString.get (i), doc.getStyle (initStyles.get (i)));
}
}
catch (Exception e)
{}
}
protected void addStylesToDocument ( StyledDocument doc, List url, List initStyles )
{
Style def = StyleContext.getDefaultStyleContext ().getStyle (StyleContext.DEFAULT_STYLE);
for ( int i = 0; i
{
Style s = doc.addStyle (initStyles.get (i), def);
StyleConstants.setAlignment (s, StyleConstants.ALIGN_CENTER);
ImageIcon icon = createImageIcon (url.get (i));
if (icon != null)
{
StyleConstants.setIcon (s, icon);
}
}
}
protected static ImageIcon createImageIcon ( String url )
{
URL imgURL = null;
try
{
imgURL = new URL (url);
if (imgURL != null)
{
return new ImageIcon (imgURL);
}
}
catch (Exception e)
{}
return null;
}
private void resolveHTML ( String spec, String charsetName, String regex )
{
try
{
URL url = new URL (spec);
HttpURLConnection huc = (HttpURLConnection) url.openConnection ();
InputStreamReader isr = new InputStreamReader (huc.getInputStream (), charsetName);
BufferedReader br = new BufferedReader (isr);
StringBuilder builder = new StringBuilder ();
String line = null;
while (null != ( line = br.readLine () ))
{
builder.append (line);
}
br.close ();
isr.close ();
huc.disconnect ();
String bs = builder.toString ();
Pattern pattern = Pattern.compile (regex);
Matcher matcher = pattern.matcher (bs);
initString.clear ();
initStyles.clear ();
path.clear ();
while (matcher.find ())
{
String p = matcher.group (1);
initString.add (" ");
initStyles.add (p);
path.add (p);
}
loadImages (initString, initStyles, path);
}
catch (Exception e)
{
return;
}
}
public static void main ( String[] args )
{
SwingUtilities.invokeLater (new Runnable ()
{
@Override
public void run ()
{
ImageViewer tester = new ImageViewer ();
tester.addComponents ();
tester.setVisible (true);
}
});
}
}
java 获取mp3 封面_java如何获取.mp3格式文件内置歌曲封面相关推荐
- Java并发编程(1):可重入内置锁
每个Java对象都可以用做一个实现同步的锁,这些锁被称为内置锁或监视器锁.线程在进入同步代码块之前会自动获取锁,并且在退出同步代码块时会自动释放锁.获得内置锁的唯一途径就是进入由这个锁保护的同步代码块 ...
- java mp3解析_java深度解析mp3文件
mp3这种音乐格式的音乐文件在我们的生活中遇到的是最多最普通的,那么他们有那些属性了.要是你看到下面的解释没有觉得他很强大,那你就是一个强人,在网上淘的,加上自己的一些理解吧 import java. ...
- java opencv 读取视频_java使用OpenCV从视频文件中获取帧
本文实例为大家分享了java使用OpenCV从视频文件中获取帧的具体代码,供大家参考,具体内容如下 实现功能:使用Java获取mp4.mov.avi等视频文件中的图像帧,每秒获取一帧图像,并保存 环境 ...
- java后台怎么获取系统时间_Java 后台获取当前时间
Calendar c = Calendar.getInstance();//可以对每个时间域单独修改 int year = c.get(Calendar.YEAR); int month = c.ge ...
- 在java中图片路径_java中获取图片路径三中方法
java中获取图片路径的方法 //获取路径三中方法 //+ f.getOriginalFilename(); //String filedir = Thread.currentThread().get ...
- java中转换日期_java中时间日期格式讲解和转换方法
额,其实做项目一个无可避免的工具包就是时间日期格式的转换.因为时间久了所以自己也存了好多关于转换的方法之类的.但是有时候就会不满足需求,手写一时半会儿还写不出来(我不知道是不是我太菜了,知道某类大概有 ...
- python中获取目录下所有文件名以及读取一个文件内的每一行
2020-12-25 读取目录下所有文件 img_list=os.listdir(img_path) 获取img_path下所有文件名,返回值类型为list,同时也可以得到该目录下所有文件夹名 读取文 ...
- java odbc 实现access连接并导出mdb格式文件
文章目录 一.前言 二.概述 三.具体实现 1.思路 2.access数据库连接 3.环境搭建(如果jdk版本低于8,可以直接跳过) 4.代码 四.总结 一.前言 知识是伟大的,奉献知识的人更是伟大的 ...
- java mp3 信息_Java代码获取Mp3音乐的歌名、歌手、专辑名等信息
这里介绍的是使用Jaudiotagger库获取Mp3音频文件的歌名.歌手.专辑名等信息.使用的jaudiotagger-2.2.6-SNAPSHOT.jar包下载地址:Download. 实现代码如下 ...
最新文章
- 14 Java面试之 IO 流技术
- 安装python-devel开发包
- 最烦人的正则表达式记忆口诀
- 毕业设计《MMORPG DEMO》——1
- 【工具】模板引擎 Velocity
- Java设计模式之组合Composite模式代码示例
- Some Tips About Layout Resource
- 切换Debug/Release编译模式和Archive的作用
- Java线程池,从使用到原理
- 使用Akka持久化——消息发送与接收
- Java拓展(数据类型及其大小)
- 目前使用的工具及开发方式
- python二进制转十进制代码_python二进制转十六进制代码
- TCP模块如何处理数据包
- spss 安装包以及许可证
- 资源池(数据库连接池,内存池,线程池)
- Unity2D中逐帧动画的制作
- 安全牛:安全与业务不存在平衡 证明价值是关键
- 回调函数,监听函数 关系 个人学习理解
- 201709-2公共钥匙盒
热门文章
- 使用 Wireshark 进行计算机网络协议分析
- IOS版伪春菜开发笔记1.0之XCODE快速上手篇
- 20个月股票投资经验全面总结,买格力电器也能亏钱,牛逼企业的股票,竟然由傻瓜在定价
- 丁华锋 机器人_国家重点研发计划“智能机器人”项目在西安交大启动
- 关于WMPlayer.OCX.7
- 一款开源的播放器框架WMPlayer
- 关于mt6572不能开机问题
- jquery:$elem.is(‘:hidden‘)的含义
- 带编制的博士坑位(拒绝非升即走)
- 辐射4ap回复速度_磁共振清晰没辐射,为何却总推荐做CT,道理很简单,但有人不相信...