java圖片合成
❶ java關於圖片合成的問題
圖片不是積木 疊在一起就是合成的
尤其是jpg格式 很復雜的 文件前面附加了很多信息
JPG的壓縮原理足夠寫一本書
❷ Java編寫時,能不能像PS一樣對圖片進行修圖或合成呀
不可以的,但是可以先使用Ps等圖片處理工具將圖片美化好後,再使用java進行編寫。
❸ java 把背景和文字合成一張圖片,其中圖片長和高用戶自定義。
使用BufferedImage去合成
~~~~
❹ java圖形處理 能實現 剪切 魔術棒選著區域並替換為其他圖片 合成圖片 還有仿製圖章功能嗎
java還是不處理這些為好 交給PS吧
❺ java如何將多張圖片連接成一張圖片
需要用到BufferedImage了 你查一下這方面的資料
你要的那個功能很簡單···但是例子寫起來很麻煩
❻ java 如何將多張JPG圖片合成視頻文件,比如:avi格式 或 mpg格式.
之前有做過圖片合成視頻的功能,大概代碼就是這樣,你可以看一下
/**
* 圖片合成視頻
* @param mp4SavePath 視頻保存路徑
* @param imageDir 圖片地址
* @param rate 這個可以理解成視頻每秒播放圖片的數量
*/
public static boolean jpgToMp4(String mp4SavePath, String imageDir, double rate) {
FFmpegFrameRecorder recorder = null;
boolean flag = true;
try {
File[] files = FileUtils.fileSort(imageDir);
int [] widthArray = new int[files.length];
int [] heightArray = new int[files.length];
/**
* 獲取合成視頻圖片的最大寬高,避免圖片比例不一致最終合成效果差
*/
for (int i = 0; i < files.length; i++) {
BufferedImage bufferedImage = ImageIO.read(files[i]);
widthArray[i] = bufferedImage.getWidth();
heightArray[i] = bufferedImage.getHeight();
}
/**
* 這個方法主要是防止圖片比例達不到視頻合成比例的要求,如果達不到下面條件視頻則會無法播放
* 圖片寬:必須要被32整除
* 圖片高:必須要被2整除
*/
int [] maxWH = getImgMaxWH(widthArray,heightArray);
recorder = new FFmpegFrameRecorder(mp4SavePath,maxWH[0],maxWH[1]);
recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);
/**
* 視頻質量:目前測試出來的是25-30最清晰,視頻質量范圍好像是0-40,具體可以自己慢慢測
*/
recorder.setVideoQuality(25);
recorder.setFormat("mp4");
recorder.setFrameRate(rate > 0 ? rate : 1);
recorder.setPixelFormat(0);
recorder.start();
OpenCVFrameConverter.ToIplImage conveter = new OpenCVFrameConverter.ToIplImage();
/**
* 合成視頻
*/
for(int i = 0; i < files.length; i++ ){
opencv_core.IplImage image = cvLoadImage(files[i].getPath());
recorder.record(conveter.convert(image));
opencv_core.cvReleaseImage(image);
}
logger.info("合成成功");
} catch(Exception e) {
e.printStackTrace();
flag = false;
logger.error("合成失敗");
} finally {
try {
if (recorder != null){
recorder.stop();
recorder.release();
}
} catch (FrameRecorder.Exception e) {
e.printStackTrace();
}
}
return flag;
}
❼ Spring mvc 如何根據已有的圖片 合並成一個新的圖片
...如何把前台圖片傳到後台應該會吧 不會網路下 demo很多
至於 圖片合成也很簡單
import java.io.File;
import
java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
public class test
{
public static void main(String args[])
{
try
{
//讀取第一張圖片
File fileOne = new
File("D:\\M114317.png");
BufferedImage ImageOne =
ImageIO.read(fileOne);
int width = ImageOne.getWidth();//圖片寬度
int height = ImageOne.getHeight();//圖片高度
//從圖片中讀取RGB
int[]
ImageArrayOne = new int[width*height];
ImageArrayOne =
ImageOne.getRGB(0,0,width,height,ImageArrayOne,0,width);
//對第二張圖片做相同的處理
File fileTwo = new File("D:\\M114320.png");
BufferedImage ImageTwo = ImageIO.read(fileTwo);
int[] ImageArrayTwo
= new int[width*height];
ImageArrayTwo =
ImageTwo.getRGB(0,0,width,height,ImageArrayTwo,0,width);
//生成新圖片
BufferedImage ImageNew = new
BufferedImage(width*2,height,BufferedImage.TYPE_INT_RGB);
ImageNew.setRGB(0,0,width,height,ImageArrayOne,0,width);//設置左半部分的RGB
ImageNew.setRGB(width,0,width,height,ImageArrayTwo,0,width);//設置右半部分的RGB
File outFile = new File("d:\\out.png");
ImageIO.write(ImageNew, "png",
outFile);//寫圖片
}
catch(Exception e)
{
e.printStackTrace();
}
}
❽ java實現多張圖片合成一張tif圖片 RenderedImage[] imgs(多張圖片), String path(保存路徑)
public static void many2one(List<String> bookFilePaths, String toPath,String distFileName) {
if (bookFilePaths != null && bookFilePaths.size() > 0) {
File[] files = new File[bookFilePaths.size()];
for(int i = 0; i < bookFilePaths.size(); i++){
files[i] = new File(bookFilePaths.get(i));
}
if (files != null && files.length > 0) {
try {
ArrayList pages = new ArrayList(files.length - 1);
FileSeekableStream[] stream = new FileSeekableStream[files.length];
for (int i = 0; i < files.length; i++) {
stream[i] = new FileSeekableStream(
files[i].getCanonicalPath());
}
ParameterBlock pb = (new ParameterBlock());
PlanarImage firstPage = JAI.create("stream", stream[0]);
for (int i = 1; i < files.length; i++) {
PlanarImage page = JAI.create("stream", stream[i]);
pages.add(page);
}
TIFFEncodeParam param = new TIFFEncodeParam();
boolean f = makeDirs(toPath);
System.out.println(f);
OutputStream os = new FileOutputStream(toPath + File.separator+ distFileName);
ImageEncoder enc = ImageCodec.createImageEncoder("tiff",
os, param);
param.setExtraImages(pages.iterator());
enc.encode(firstPage);
for (int i = 0; i < files.length; i++) {
stream[i].close();
}
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
❾ jsp(java /html/javascript) 中有沒有將兩張圖片合成一張圖片的方法啊
Image image1 = ImageIO.read(new File(fileurl1));
Image image2 = ImageIO.read(new File(fileurl2));
int width = image.getWidth(5000);// 得到圖片的長,寬
int height = image.getHeight(5000);
BufferedImage bufferedimage = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);// 構造一個內存圖片
bufferedimage.getGraphics().drawImage(image1, 0, 0, width, height, null); // 將本地圖片畫入到內存圖片
bufferedimage.getGraphics().drawImage(image2, 0, 0, image1.getWidth, image1.getHeight, null);
response.setContentType("image/jpeg");// 設置返回頭部
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
ImageIO.write(bufferedimage, "JPEG", response.getOutputStream()); //寫到瀏覽器
大概方向就是這樣,把圖片放到內存中,然後繪制內存圖片,把他們包含進去,然後把內存圖片返回。
我亂改的,不能跑的。前不久剛做過
你可以試試
==========================================
幾張圖放一起沒試過,你可以試試在繪了一張後,接著會第2張,他們的開始地點相同,看會不會被覆蓋