java实现图片预览功能,可以显示缩列图,具有上下页的功能求技术支持 5

 我来答
zakaz168
2013-05-27 · TA获得超过345个赞
知道小有建树答主
回答量:272
采纳率:0%
帮助的人:228万
展开全部

把图片按照规定的比例压缩,然后保存至FTP,列表读取缩略图,单击显示原图。

/**
     * 压缩图片方法一(高质量)
     * @param oldFile 将要压缩的图片
     * @param width 压缩宽
     * @param height 压缩高
     * @param smallIcon 压缩图片后,添加的扩展名(在图片后缀名前添加)
     * @param quality 压缩质量 范围:<i>0.0-1.0</i> 高质量:<i>0.75</i> 中等质量:<i>0.5</i> 低质量:<i>0.25</i>
     * @param percentage 是否等比压缩 若true宽高比率将将自动调整
     */
    public static void compressImage(String oldFile, int width, int height, String smallIcon,
            float quality, boolean percentage) {
        try {
            File file = new File(oldFile);
            
            // 验证文件是否存在
            if(!file.exists())
                throw new FileNotFoundException("找不到原图片!");
            
            // 获取图片信息
            BufferedImage image = ImageIO.read(file);
            int orginalWidth = image.getWidth();
            int orginalHeight = image.getHeight();
            
            // 验证压缩图片信息
            if (width <= 0 || height <= 0 || !Pattern.matches("^[1-9]\\d*$", String.valueOf(width))
                    || !Pattern.matches("^[1-9]\\d*$", String.valueOf(height)))
                throw new Exception("图片压缩后的高宽有误!");
            
            // 等比压缩
            if (percentage) {
                double rate1 = ((double) orginalWidth) / (double) width + 0.1;
                double rate2 = ((double) orginalHeight) / (double) height + 0.1;
                double rate = rate1 > rate2 ? rate1 : rate2;
                width = (int) (((double) orginalWidth) / rate);
                height = (int) (((double) orginalHeight) / rate);
            }
            
            // 压缩后的文件名
            String filePrex = oldFile.substring(0, oldFile.lastIndexOf('.'));
            String newImage = filePrex + smallIcon + oldFile.substring(filePrex.length());

            // 压缩文件存放位置
            File savedFile = new File(newImage);

            // 创建一个新的文件
            savedFile.createNewFile();

            // 创建原图像的缩放版本
            Image image2 = image.getScaledInstance(width, height, Image.SCALE_AREA_AVERAGING);

            // 创建数据缓冲区图像
            BufferedImage bufImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

            // 创建一个Graphics2D
            Graphics2D g2 = bufImage.createGraphics();

            // 重绘图像
            g2.drawImage(image2, 0, 0, width, height, null);
            g2.dispose();
            
            // 过滤像素矩阵
            float[] kernelData = { 
                    -0.125f, -0.125f, -0.125f, 
                    -0.125f, 2, -0.125f, -0.125f, 
                    -0.125f, -0.125f };
            Kernel kernel = new Kernel(3, 3, kernelData);
            
            // 按核数学源图像边缘的像素复制为目标中相应的像素输出像素
            ConvolveOp cOp = new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null);

            // 转换像素
            bufImage = cOp.filter(bufImage, null);

            FileOutputStream out = new FileOutputStream(savedFile);
            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
            JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bufImage);

            // 设置压缩质量
            param.setQuality(quality, true);
            encoder.encode(bufImage, param);

            out.close();
            System.out.println(newImage);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("压缩失败!" + e.getMessage());
        }
    }
冰火两重天
2013-05-27 · TA获得超过1425个赞
知道小有建树答主
回答量:1489
采纳率:0%
帮助的人:996万
展开全部
这个应该不难吧。
你用swing做吗?
在读取图片文件完毕后,循环所有的图片,根据原图生成缩略图。
生成缩略图的代码可以看这里:http://zhidao.baidu.com/question/211092423.html
可以用一个table来显示所有的图片列表,用用户label显示缩略图。增加一个单击事件,单击的时候,显示原图。
追问

是不难!我是页面的的现在是用jquery插件的实现的,但是感觉效果有点欠缺想看看有没有其他更好的

追答
这种有现成的jQuery插件,你百度看看
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xng1234
2013-05-27
知道答主
回答量:35
采纳率:0%
帮助的人:13.2万
展开全部
有个thickbox的js插件很好用,不过是js的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ViewSite
2013-05-27 · TA获得超过1004个赞
知道小有建树答主
回答量:206
采纳率:50%
帮助的人:158万
展开全部
参考opencv
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式