zoukankan      html  css  js  c++  java
  • 图片的另一种展现—将后台图片编码直接展现为图片

    1、应用场景

               开发过程中,遇到这样的需求:需要将服务器上的图片展现在页面上,但是图片所在服务器不是对外的,图片所在服务器与应用服务器也不在同一台机器上,这时候就需要在开发中先将图片读出来,返回给应用服务器,应用服务器再对读取的图片进行处理,并展现。

               一般,我们在struts2中我们都会通过两次请求,来获取图片,有一次的请求是专用来获取图片的流。

               Struts的配置如下:

    <result type="stream"> 
             <param name="contentType">image/jpeg</param>   
             <param name="inputName">inputStream</param>   
             <param name="contentDisposition">filename="struts-gif.zip"</param>   
             <param name="bufferSize">4096</param>   
    </result>

              现在我们使用新的方式来获取图片,并展示。

    2、读取图片

              (a) 首先我们先读取图片,并编码;

    public static String getImageStr(String path){
            File file = new File(path);
            if(file.exists()){
                InputStream inputStream = null;
                byte[] data = null;
                try {
                    inputStream = new FileInputStream(file);
                    data = new byte[inputStream.available()];
                    inputStream.read(data);
                    inputStream.close();
                } catch (Exception e) {
                    e.printStackTrace();
                } 
                BASE64Encoder encoder = new BASE64Encoder();
                return encoder.encode(data);
            }    else {
                return null;
            }
        }

               (b) 服务交互部分使用的是hessian,略

               (c) 页面的展现:

                                    <td align="center" height="120" width="20%">
                                        图片:
                                    </td>
                                    <td height="24" width="40%" align="center">
                                        <img id="imgObj" width="96" height="118" alt="y" src="data:image/gif;base64,<s:property value="photoStr"/>"/>
                                    </td>

                开发中使用了Struts2,展现的时候我们只需要让图片的src等于图片的base64的编码即可,不过切记编码必须和data:image/gif;base64,一起

  • 相关阅读:
    C语言 简单的队列(数组队列)
    C语言 复杂的栈(链表栈)
    C语言 简单的栈
    C语言 链表的使用(链表的增删查改,链表逆转,链表排序)
    C语言 常用的时间函数
    C语言 百炼成钢17
    C语言 const常量讲解
    ndroid如何监听开机广播和关机广播
    Android判断GPS是否开启和强制帮用户打开GPS
    android java.lang.IllegalArgumentException: Comparison method violates its general contract! 问题
  • 原文地址:https://www.cnblogs.com/kakag/p/3470083.html
Copyright © 2011-2022 走看看