JAVA版的相册制作程序

原创 2006年05月30日 11:38:00
一次,偶然在ZhangLiHai.com上发现了一个相册制作程序,核心功能基本上有了,我只是稍加修改了生成html文件的代码。
在此基础上稍加修改,还可以在相片上追加文字、图片等,各位就根据自己的需要再加工吧!
 

import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.awt.image.ImageObserver;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageDecoder;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
/**
 * @author 丁令 Zhanglihai
 *
 * 此程序在Zhanglihai相册制作程序基础上修改而来
 *
 * 程序会在指定目录下生成index.html文件及略缩图目录
 * 具体效果请参见:http://www.dingl.com/photo/dingl/20041219-borland-fb/
 */
public class Zoom {
 String srcPath;
 StringBuffer html;
 int count;
 public Zoom(String srcPath) {
  this.srcPath = srcPath;
  init();
 }
 public void zoom(File input) {
  //输出的位置
  String output = getOutputPath();
  try {
   InputStream imageStream = new FileInputStream(input);
   //根据目标图片建立一个缓存图片
   JPEGImageDecoder decoderFile = JPEGCodec.createJPEGDecoder(imageStream);
   BufferedImage imageFile = decoderFile.decodeAsBufferedImage();
   float zoom = 0.12F; //你要方缩的比例
   //获得目标图片的宽高,同时乘以放缩比例得到新图片大小
   int w = (int) (imageFile.getWidth() * zoom);
   int h = (int) (imageFile.getHeight() * zoom);
   //建立一个新图片的缓存图片
   BufferedImage bufImage = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
   String zoomFile = output + "/zooms_" + input.getName();
   FileOutputStream out = new FileOutputStream(zoomFile);
   //从目标图片上获得Graphics以便画在新图片上,最后一个参数是内部无名类,可以用null代替
   Graphics g = bufImage.getGraphics();
   g.drawImage(imageFile, 0, 0, w, h, new ImageObserver() {
    public boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height) {
     return true;
    }
   });
   //编码输出
   JPEGImageEncoder jpeg = JPEGCodec.createJPEGEncoder(out);
   jpeg.encode(bufImage);
   out.flush();
   out.close();
   imageStream.close();
   int row = count % 3;
   if (row == 0) {
    html.append("/n/t<tr>");
   }
   html.append("/n/t/t<td align='center'><a href='").append(input.getName()).append("' target='_blank'>");
   html.append("<img src='zoom" + "/zooms_" + input.getName() + "' border='0'><br>");
   html.append(input.getName() + "</a></td>");
   if (row == 2) {
    html.append("/n/t</tr>");
   }
   count++;
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
 public void process() {
  File[] files = getFiles();
  mkdirs();
  for (int i = 0; i < files.length; i++) {
   zoom(files[i]);
  }
  trail();
  outputHtmlFile();
 }
 private File[] getFiles() {
  File path = new File(srcPath);
  File[] files = path.listFiles(new FileFilter() {
   public boolean accept(File pathname) {
    if (pathname == null)
     return false;
    String ext = pathname.getName().substring(pathname.getName().lastIndexOf(".") + 1).toUpperCase();
    return ext.equals("JPG") || ext.equals("JPEG");
   }
  });
  return files;
 }
 private void mkdirs() {
  File zoomPath = new File(getOutputPath());
  zoomPath.mkdirs();
 }
 private String getOutputPath() {
  return srcPath + "/zoom";
 }
 private void init() {
  count = 0;
  html = new StringBuffer();
  html.append("<html>");
  html.append("/n<head>");
  html.append("/n<meta http-equiv=/"Content-Type/" content=/"text/html; charset=gb2312/">");
  html.append("/n<title>").append(getDirName()).append("</title>");
  html.append("/n</head>");
  html.append("/n/n<body>");
  html.append("/n<table width='75%' border='1'>");
 }
 private void trail() {
  int row = count % 3;
  if (row == 0) {
   html.append("/n/t/t<td>&nbsp;</td>");
  }
  if (row == 1) {
   html.append("/n/t/t<td>&nbsp;</td>");
   html.append("/n/t/t<td>&nbsp;</td>");
  }
  html.append("/n/t</tr>");
  html.append("/n</table>");
  html.append("/n</body>");
  html.append("/n</html>");
 }
 private String getDirName() {
  if (srcPath.endsWith("/")) {
   srcPath = srcPath.substring(0, srcPath.length() - 1);
  }
  return srcPath.substring(srcPath.lastIndexOf("/") + 1);
 }
 private void outputHtmlFile() {
  FileWriter writer = null;
  try {
   File htmlFile = new File(srcPath + "/index.html");
   writer = new FileWriter(srcPath + "/index.html");
   writer.write(html.toString());
   writer.flush();
  } catch (IOException e) {
   e.printStackTrace();
  } finally {
   if (writer != null) {
    try {
     writer.close();
    } catch (IOException e1) {
     e1.printStackTrace();
    }
   }
  }
 }
 public static void main(String[] args) {
  String srcPath = args[0];
  if (srcPath==null){
   printHelp();
   return;
  }
  
  Zoom zoom = new Zoom(srcPath);
  zoom.process();
 }
 
 public static void printHelp(){
  System.out.println("USAGE : java Zoom <FILEPATH>");
 }
}

java学习(给对象制作的简单的有背景音乐的电子相册)

package com.wx2015210; import java.applet.Applet; import java.awt.BorderLayout; import java.a...
  • u010747691
  • u010747691
  • 2015年02月17日 10:06
  • 537

JAVA版的相册制作程序

import java.awt.Graphics;import java.awt.Image;import java.awt.image.BufferedImage;import java.awt.i...
  • yefei679
  • yefei679
  • 2008年12月02日 15:11
  • 396

Java简单电子相册

涉及的知识点:GUI界面,事件监听,通过一个简单实例学习一下Java这方面的知识 package myTest; import java.awt.*; import java.awt.eve...
  • aidayei
  • aidayei
  • 2012年02月21日 21:02
  • 3024

pc相册制作,手机版相册制作

pc相册效果制作
  • qq_26138325
  • qq_26138325
  • 2016年04月12日 16:35
  • 266

3D立体相册,一个可旋转的立体相册

11359.gif 主要功能:立体球体展示 可自行添加本地照片 可旋转,照片可放大 商城下载: App Store github下载 用的代码是用的云标签的code,代码略有改动 主...
  • u010070526
  • u010070526
  • 2017年05月24日 11:34
  • 891

微信小程序示例 - 小相册

小相册是结合腾讯云对象存储服务(Cloud Object Service,简称COS)制作的一个微信小程序示例。在代码结构上包含如下两部分: https://github.com/CFETeam...
  • sinat_17775997
  • sinat_17775997
  • 2017年03月14日 14:22
  • 3349

旋转立方体相册

网上看到其他人设计的立方体相册,自己也比着做了一个! 文本结构 second.html 旋转立方体相册...
  • ahao214
  • ahao214
  • 2016年08月09日 15:29
  • 511

Android 自己制作的相册--效果还不错哦

 这是我学习Android时做的一个小程序,程序主要功能是实现一个迷你相册的功能,可以在虚拟机上看到很不错的效果。我设置屏幕的大小为800*600 /**ImageSwitcherGallery.ja...
  • zyc13701469860
  • zyc13701469860
  • 2011年02月15日 22:43
  • 3883

关于“微信订阅号/制作相册”

微信订阅号/制作相册:用户上传几张图片,然后选择参数,发布为一个带有动画特效的“相册”。纯粹就是一个功能单一的web服务吧,这里主要的问题在于图片数据托管存在哪里?  其实搞个“绿茶订阅号”...
  • cteng
  • cteng
  • 2016年06月17日 22:43
  • 3589

HTML5相册,网页,模板,微信,制作,

、 微信h5页面制作方法_百度经验 在线制作h5 h5生成器 在线生成h5 微信 APP 模板 页面 网上免费...
  • yue31313
  • yue31313
  • 2016年12月29日 15:51
  • 464
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JAVA版的相册制作程序
举报原因:
原因补充:

(最多只允许输入30个字)