问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java如何获取.mp3格式文件内置歌曲封面

发布网友 发布时间:2022-04-22 21:29

我来回答

1个回答

热心网友 时间:2022-05-05 07:41

封面就是图片,用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<String> initString = new LinkedList<String> ();
LinkedList<String> initStyles = new LinkedList<String> ();
LinkedList<String> path = new LinkedList<String> ();

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)\\<img[^\\>]*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 < path.size (); 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<String> initString, List<String> initStyles, List<String> url )
{
try
{
StyledDocument doc = textPane.getStyledDocument ();
doc.remove (0, doc.getLength ());
addStylesToDocument (doc, url, initStyles);
for ( int i = 0; i < initString.size (); i++ )
{
doc.insertString (doc.getLength (), initString.get (i), doc.getStyle (initStyles.get (i)));
}
}
catch (Exception e)
{}
}

protected void addStylesToDocument ( StyledDocument doc, List<String> url, List<String> initStyles )
{
Style def = StyleContext.getDefaultStyleContext ().getStyle (StyleContext.DEFAULT_STYLE);
for ( int i = 0; i < initStyles.size (); 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);
}
});
}
}

追问哪些变量是要自己的填的,详细解释一下。

怎么使用,我使用不了

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女生多大后可以不在长身高? 如何不用软件把手机投屏到电脑上手机屏幕怎样投放到电脑上 战时拒绝、故意延误军事订货罪既遂的处罚? 战时故意延误军事订货罪处罚标准 名师1+1导读方案:汤姆·索亚历险记目录 三星sm-g7200打开微信慢,无法正常收看,网速不慢。 笔记本电脑如何调亮屏幕亮度 大伙说说洗衣机要不要带烘干好 热烘干洗衣机怎么样 ef英语哪个好 老司机,一言不合就开车什么意思 如何导出MP3歌曲文件专辑封面 老司机,开车是什么意思啊求大神解释。 “老司机”是什么意思? 怎么用C语言提取MP3文件中内嵌的专辑封面 开车什么意思 老司机开车什么梗 qq音乐 收藏的歌单 封面 图片 谁知道怎么提取吗? 他们说的老司机是什么意思 我要提取安卓手机歌曲的封面,该怎么来提取??? 举例说明“开车”和“老司机”是什么意思。 网络语老司机是什么意思? itunes 10 添加音乐专辑后会自动添加封面,但歌曲本身并没有被写入封面,请问如何提取自动添加的封面? 微博里面老司机和开车分别是什么意思? 在哪里寻找高质量音乐专辑封面 网络用语“老司机开车”什么意思? 如何用vb提取音乐文件专辑封面 网络用语中“开车”是什么意思? “老司机开车”是什么意思? Apple Music怎么获取歌单封面图? 如何提取MP3内嵌专辑封面? android中音乐如何网络获取专辑封面图片 微博里面 老司机 和 开车分别是什么意思? iTunes怎么导出音乐专辑封面到本地 老司机是什么意思!!! 在哪里寻找高质量(官方)音乐专辑封面? 网上人们常说的“老司机”到底是什么意思 请问网上说得“开车”是什么意思?总是说老司机带我之类的话 如何提取音频文件里面的专辑封面 平常我们老说的“老司机”到底是什么意思? 怎么制作MP3内嵌的歌曲专辑封面图片?求具体做法,或软件! 老司机是什么意思? 老是看到有人说老司机,求开车,什么意思 LOL排位赛里说的“开车”“翻车”“老司机”是什么意思?注意不是塞恩开大说的的那个开车。 win7 怎么调整系统字体大小 WIN7系统第三方应用程序字体很小,怎么调整??? WIN7系统字体大小问题 win7系统,QQ界面的字体大小怎么更改 关于51前程无忧的简历填写问题 房贷是什么意思? 房贷是什么意思