java播放声音和图片的代码_java怎么将出片处理成老照片?怎么播放声音?
在java編程語(yǔ)言中,有各式各樣的程序可以解決我們的日常問(wèn)題。今天就為大家介紹一下,怎么在java中將剛拍出的照片處理成老照片,以及在java中如何實(shí)現(xiàn)播放聲音的效果。
我們知道有一款軟件即PS,可以讓照片看起來(lái)像是飽經(jīng)滄桑,微微泛黃。英文中這種圖像特效被稱為Sepia Tone Effect:int?fr?=?(int)(((double)?tr?*?0.393)?+?((double)?tg?*?0.769)?+?((double)?tb?*?0.189));
int?fg?=?(int)(((double)?tr?*?0.349)?+?((double)?tg?*?0.686)?+?((double)?tb?*?0.168));
int?fb?=?(int)(((double)?tr?*?0.272)?+?((double)?tg?*?0.534)?+?((double)?tb?*?0.131));
之后,我們需要對(duì)圖像計(jì)算出來(lái)的新的RGB值根據(jù)隨機(jī)權(quán)重與舊值混合。
計(jì)算隨機(jī)權(quán)重的代碼如下:private?double?noise()
{
return?Math.random()?*?0.5?+?0.5;
}
混合顏色的代碼如下:private?double?colorBlend(double?scale,?double?dest,?double?src)
{
return?(scale?*?dest?+?(1.0?-?scale)?*?src);
}
濾鏡完全源代碼:package?com.gloomyfish.filter.study;
import?java.awt.image.BufferedImage;
public?class?SepiaToneFilter?extends?AbstractBufferedImageOp
{
@Override
public?BufferedImage?filter(BufferedImage?src,?BufferedImage?dest)
{
int?width?=?src.getWidth();
int?height?=?src.getHeight();
if?(dest?==?null)
dest?=?createCompatibleDestImage(src,?null);
int[]?inPixels?=?new?int[width?*?height];
int[]?outPixels?=?new?int[width?*?height];
getRGB(src,?0,?0,?width,?height,?inPixels);
int?index?=?0;
for?(int?row?=?0;?row?
{
int?ta?=?0,?tr?=?0,?tg?=?0,?tb?=?0;
for?(int?col?=?0;?col?
{
index?=?row?*?width?+?col;
ta?=?(inPixels[index]?>>?24)?&?0xff;
tr?=?(inPixels[index]?>>?16)?&?0xff;
tg?=?(inPixels[index]?>>?8)?&?0xff;
tb?=?inPixels[index]?&?0xff;
//int?fr=?(int)(((double)tr?*?0.393)?+?((double)tg?*?0.769)?+?((double)tb?*?0.189));
//int?fg?=?(int)(((double)tr?*?0.349)?+?((double)tg?*?0.686)?+?((double)tb?*?0.168));
//int?fb=?(int)(((double)tr?*?0.272)?+?((double)tg?*?0.534)?+?((double)tb?*?0.131));
int?fr?=?(int)?colorBlend(noise(),?(tr?*?0.393)?+?(tg?*?0.769)?+?(tb?*?0.189),?tr);
int?fg?=?(int)?colorBlend(noise(),?(tr?*?0.349)?+?(tg?*?0.686)?+?(tb?*?0.168),?tg);
int?fb?=?(int)?colorBlend(noise(),?(tr?*?0.272)?+?(tg?*?0.534)?+?(tb?*?0.131),?tb);
outPixels[index]?=?(ta?<
}
}
setRGB(dest,?0,?0,?width,?height,?outPixels);
return?dest;
}
private?double?noise()
{
return?Math.random()?*?0.5?+?0.5;
}
private?double?colorBlend(double?scale,?double?dest,?double?src)
{
return?(scale?*?dest?+?(1.0?-?scale)?*?src);
}
public?static?int?clamp(int?c)
{
return?c?>?255???255?:?((c?
}
public?String?toString()
{
return?"Sepia?Tone?Effect?-?Effect?from?Photoshop?App";
}
}
下面為大家展示在java中實(shí)現(xiàn)聲音播放效果的方法。
首先可以使用MediaPlayer播放聲音,它通常用于所有音頻的內(nèi)容:public?class?APP?extends?Activity
{
//ADD?THIS?LINE?AND?IMPORT?MediaPlayer
MediaPlayer?btnClick;
@Override
public?void?onCreate(Bundle?savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//ADD?THIS?LINE?TO?YOUR?onCreate?METHOD?AFTER?YOU?SET?THE?CONTENT?VIEW
btnClick?=?MediaPlayer.create(this,?R.raw.button_click);
}
}
之后它將設(shè)置音頻及其播放的內(nèi)容,直到完成。然后將此行添加到需要播放聲音的任何地方:btnClick.start();
如果想要循環(huán)播放(配樂(lè)或歌曲),需要添加以下內(nèi)容:btnClick.setLooping(true);
完成循環(huán)播放的配樂(lè)或完成應(yīng)用程序后,可以添加以下內(nèi)容用來(lái)停止音頻:btnClick.setLooping(true);
或者btnClick.release();
從技術(shù)上講,我們應(yīng)該為MediaPlayer本身添加2行,開(kāi)始添加1行,結(jié)束添加1行(自由選擇,但最適合于良好的編程習(xí)慣和實(shí)踐)。
以上就是關(guān)于如何在java中將出片處理成老照片的有關(guān)內(nèi)容,以及怎么在java中實(shí)現(xiàn)播放聲音的效果。想要了解更多java經(jīng)典例子及常見(jiàn)問(wèn)題,敬請(qǐng)關(guān)注奇Q工具網(wǎng)。
推薦閱讀:
總結(jié)
以上是生活随笔為你收集整理的java播放声音和图片的代码_java怎么将出片处理成老照片?怎么播放声音?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java git服务器_Windows平
- 下一篇: java面试题标签_java面试笔试题