java圖片拼接
㈠ java8中如何將多個集合的數據拼接成一個統一的流
java8中stream的提供了一個拼接流的方法Stream.concat,可以將兩個stream拼友嫌接成一個stream, 保持了兩個stream中的元素順序。
  
 那麼如果我們需要對多個集合中的元素拼接成一個stream來統一處理,可以怎麼做呢?
  
 比如有三個Collection<String> c1, c2, c3.
  
 方法一,使用Stream.concat方法來拼接,可以使用一個for循環來處理。
  
 private static Stream<String> concat1(List<Collection<String>> collections) {
Stream result = Stream.empty();
  
 for (Collection<String> strings : collections) {
  
               result = Stream.concat(result,  strings.stream());
  
 }
  
 return   result;
  
 }
  
 方法二,使用flatMap方法,將集合變成stream, 再壓平
  
 private static Stream<String> concat2(List<Collection<String>> collections) {
return  collections.stream()
  
            .flatMap(Collection::stream);
  
 }
  
 對於不同集合類型的數據,如何做成一個統一的流?還是可以使用flatMap方法來做
  
 方法三:
  
 private static Stream<String> concat3(List<String> s1,String[] s2, Set<String> s3) {
return  Stream.of(s1.stream(), Arrays.stream(s2), s3.stream())
  
            .flatMap(Function.identity());
  
 }
  
 方法三和方法二相比,可以使用不同類型的集合類型來拼接流,方法二在擁有共同基類的情況下使用會逗告棗顯山拆得簡潔很多。
㈡ 如何用Java實現兩個文件的拼接
如何用Java實現兩個文件的拼接
String類的方法:
①配枯橡利用運算符"+"
②public String concat(String str)進行字元串的拼接操作
StringBuffer的方法:
①public StringBuffer append(String str)將str添加到當前字元串緩沖區的字元序列的末尾
②public StringBuffer insert(int offset,String str)在當前字元串緩沖區的字元序列的下標
索引offset插入培旁str。如果offset等於舊長度,則str添加在字元串緩沖區的尾部敗氏
㈢ 求一個用java編寫的圖片拼接程序(全景圖拼接問題)
最近木有時間上網,偶然看到該題,沒有現成的程序,給您個思路吧,圖片在程序中本身是存的是一個二蠢岩進制矩陣,如要拼接只需將兩張圖片轉換成兩帶芹御個矩陣然後合並首仔成一個大矩陣即可,從哪個像素開始都可以從矩陣中得到數據,切割圖片亦是如此,計算一下便可。不知對您是否有幫助
㈣ 怎麼樣用Java實現將一張圖片轉成字元畫
#首先在D盤寫一個文件"temp.html",如下內容
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <title>圖片轉文本</title>
  <meta http-equiv="content-type" content="text/html; charset=gbk">
  <style type="text/css">
body {
 font-family: 宋體; line-height: 0.8em; letter-spacing: 0px; font-size: 8px;
}
</style>
 </head>
 <body>
  ${content}
 </body>
</html>
#在D盤放一個圖片(放小一點的)"a.jpg"
#運行如下JAVA代碼:
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import javax.imageio.ImageIO;
public class Test {
 /** 此處設置灰度字元,此處只用十個字元,可以設置更多 */
 private static char[] cs = new char[] { '.', ',', '*', '+', '=', '&', '$', '此則@', '#', ' ' };
 public static void main(String[] args) throws IOException {
  // 讀取圖片
  BufferedImage bfedimage = ImageIO.read(new File("D:\\a.jpg"));
  // 圖片轉字元串後的數組
  char[][] css = new char[bfedimage.getWidth()][bfedimage.getHeight()];
  for (int x = 0; x < bfedimage.getWidth(); x++) {
   for (int y = 0; y < bfedimage.getHeight(); y++) {
    int rgb = bfedimage.getRGB(x, y);
    Color c = new Color(rgb);
    // 得到灰度值悄搜
    int cc = (c.getRed() + c.getGreen() + c.getBlue()) / 3;
    css[x][y] = cs[(int) ((cc * 10 - 1) / 255)];
   }
  }
  // 取得模板HTML
  String temp = readFile(new File("D:\\temp.html"),"gbk");
  StringBuffer sb = new StringBuffer();
  // 開始拼接內容
  for (int y = 0; y < css[0].length; y++) {
   for (int x = 0; x < css.length; x++) {
    sb.append(css[x][y]);
   }
   sb.append("\r\n");
  }
  System.out.println(sb.toString());
  // 生啟扒歷成文件
  String content = toHTML(sb.toString());
  String filecontent = replaceStrAllNotBack(temp, "${content}", content);
  writeFile(new File("D:\\content.html"), filecontent, "gbk");
 }
 public static String toHTML(String s) {
  s = s.replaceAll("&", "&");
  s = s.replaceAll(" ", "");
  s = s.replaceAll(">", ">");
  s = s.replaceAll("<", "<");
  s = s.replaceAll("\"", """);
  s = s.replaceAll("\\\r\\\n", "<br/>");
  s = s.replaceAll("\\\r", "<br/>");
  s = s.replaceAll("\\\n", "<br/>");
  return s;
 }
 public static String replaceStrAllNotBack(String str, String strSrc, String strDes) {
  StringBuffer sb = new StringBuffer(str);
  int index = 0;
  while ((index = sb.indexOf(strSrc, index)) != -1) {
   sb.replace(index, index + strSrc.length(), strDes);
   index += strDes.length();
  }
  return sb.toString();
 }
 /**
  * 讀文件(使用默認編碼)
  * 
  * @param file
  * @return 文件內容
  * @throws IOException
  */
 public static String readFile(File file, String charset) throws IOException {
  InputStreamReader fr = new InputStreamReader(new FileInputStream(file), charset);
  StringBuffer sb = new StringBuffer();
  char[] bs = new char[1024];
  int i = 0;
  while ((i = fr.read(bs)) != -1) {
   sb.append(bs, 0, i);
  }
  fr.close();
  return sb.toString();
 }
 /**
  * 寫文件
  * 
  * @param file
  * @param string
  *            字元串
  * @param encoding
  *            編碼
  * @return 文件大小
  * @throws IOException
  */
 public static int writeFile(File file, String string, String encoding) throws IOException {
  FileOutputStream fos = new FileOutputStream(file);
  try {
   byte[] bs = string.getBytes(encoding);
   fos.write(bs);
   return bs.length;
  } finally {
   fos.close();
  }
 }
}
#打開"D:\content.html"文件看效果吧。
有什麼問題可以聯系我。
㈤ java實現多個tif文件圖片拼接
publicstaticvoidmany2one(List<String>bookFilePaths,StringtoPath,StringdistFileName){
if(bookFilePaths!=null&&bookFilePaths.size()>0){
File[]files判滾租=newFile[bookFilePaths.size()];
for(inti=0;i<bookFilePaths.size();i++){
files[i]=newFile(bookFilePaths.get(i));
}
if(files!=null&&files.length>0){
try{
ArrayListpages=newArrayList(files.length-1);
FileSeekableStream[]stream=newFileSeekableStream[files.length];
for(inti=0;i<files.length;i++){
stream[i]=newFileSeekableStream(
files[i].getCanonicalPath());
}
ParameterBlockpb=(newParameterBlock());
PlanarImagefirstPage=JAI.create("stream",stream[0]);
for(inti=1;i<files.length;i++){
備喊PlanarImagepage=JAI.create("stream",stream[i]);
pages.add(page);
}
TIFFEncodeParamparam=newTIFFEncodeParam();
Filef=newFile(toPath);
if(!f.exists()){
f.mkdirs();
}
OutputStreamos=newFileOutputStream(toPath+File.separator+distFileName);
ImageEncoderenc=ImageCodec.createImageEncoder("tiff",
os,param);
param.setExtraImages(pages.iterator());
enc.encode(firstPage);
for(inti=0;i<files.length;i++){
掘兆stream[i].close();
if(files[i].isFile()&&files[i].exists()){
files[i].delete();
}
}
os.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
}㈥ java 把一個大圖切割成100份放入byte[],然後取上面10塊byte[]數組進行拼接
我是初學者,你看看有幫助不伏啟
public static void merge()	throws IOException	 //文件拼接
			{
				Vector<FileInputStream>vector =new Vector<FileInputStream>();
				for (int x=1;x<18 ;x++ )//我切了17份
				{
					vector.add(new FileInputStream("虛滲e:\\缺譽如part\\"+ x +".part"));
				}
				Enumeration<FileInputStream> e=vector.elements();
				
				SequenceInputStream sis =new SequenceInputStream(e);
				FileOutputStream fos=new FileOutputStream("e:\\劉歡 - 情怨.mp3")  ;
				byte [] by =new byte [1024*1024];
				int len =0;
				while ((len=sis.read(by))!=-1)
				{
					 
					fos.write(by,0,len);
				}
				fos.close();
				sis.close();
㈦ java讀取nas存儲圖片給vue
單純的上傳文件,java的存儲圖片的方式也有局限性。
1、圖片存儲在另一個項目工程的資源文件夾中,通過路徑直接訪搏並問是訪問不到的。
2、前端含則vue獲取圖片名稱,拼接文件伺服器地址來訪問顯示圖片。
3、出於時間考慮,盡可能的簡單實現,相對FTP來說,tomcat的文談銀棚件伺服器不需要考慮用戶密碼的配置。
㈧ 如何在java中隨機顯示圖片
那是在太簡單了,方法1可以給每個照片用數字起名,然後生成隨機數,用隨機數拼接字元串生產圖片的URL就可以了,方法2是用資料庫兩個欄位id和URL隨談局機產生id然後讀取對應的URL,方法3,用file類的特性,含基讓先得到圖片文件夾的URL,這樣可以得到下面所有文件,可以存到一個List<File>中,然後生成個隨機數,用這個隨機鋒歷數get出list裡面的File
㈨ java如何將多張圖片連接成一張圖片
Image bgImage;
Image fgImage;
try {
      bgImage = ImageIO.read(bgImageFile);
      fgImage = ImageIO.read(fgImageFile);
      int bgWidth = bgImage.getWidth(null);
      int bgHeight = bgImage.getHeight(null);
      int fgWidth = fgImage.getWidth(null);
      int fgHeight = fgImage.getHeight(null);
      // 此類叫SpliceImages,這個方法是靜態方法,所以實例化一下
   // 後面的這個對象的屬性是自定義的類成員。
      SpliceImages spliceImages = new SpliceImages();
      // 私有方法
      spliceImages.parsePosition(position, bgWidth, bgHeight, fgWidth, fgHeight);
      // 生成新圖片的長、寬,後面那個是色彩模式
      BufferedImage bufferedImage = new BufferedImage(spliceImages.WIDTH, spliceImages.HEIGHT, BufferedImage.TYPE_INT_RGB);
      Graphics graphics = bufferedImage.createGraphics();
      // 繪制背景圖片
    graphics.drawImage(bgImage, spliceImages.bgX, spliceImages.bgY, null);
      // 繪制前景圖片
   graphics.drawImage(fgImage, spliceImages.fgX, spliceImages.fgY, null);
     graphics.dispose();
     JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(output);
      encoder.encode(bufferedImage);
     output.close();
} catch (IOException e) {
     e.printStackTrace();
}
這個是我做圖表時寫的,整個類中定義了很多重載方法慎桐慶,所以不全貼了。由於用的FusionCharts3.1,單系列圖表沒有圖例,為了處理導出圖片,就自製圖例,然後用java拼接。其中那個私有方法是我處理兩張圖片的左上角坐標的。這里就不貼了。實際上我的做法輪枝就是取出兩個圖片,然後重寬握新繪制。做法比較笨,希望拋磚引玉吧。同理,圖片覆蓋也是用這個,只是兩圖片的坐標發生變發。
㈩ java里有什麼方法可以拼接的游戲地圖不依賴於源素材,也就是保存的文件連圖片數據一起保存,而不只是結構
你這中思想不對,這樣不便於維護,假如以後圖片改了,數據也就變了,保存結構,然後讓數據填充
