用Response输出图片

本文介绍了一种使用 C# 实现的图片缩放方法,通过计算图片的原始尺寸与目标尺寸的比例来保持图片的纵横比不变。该方法适用于需要对图片进行预处理的应用场景,如网页显示、图片上传前的大小调整等。
        System.Drawing.Bitmap map  =   new  Bitmap(Server.MapPath( " 2008.jpg " )); 
        
// 调整图片的长短比 
         double  dl;
        
double  maxlength  =   400 ;
        
if  (map.Width  >=  map.Height)
        
{
            dl 
= (double)(maxlength / (double)map.Width);//求比例

        }

        
else
        
{
            dl 
= (double)(maxlength / (double)map.Height);
        }

        
// 构建新的图片 
        System.Drawing.Bitmap newmap = new  Bitmap(map,( int )(map.Width * dl),( int )(map.Height * dl)); 
        Response.Clear(); 
        
// 图片写入流中 
        newmap.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg); 
        
// 释放内存 
        map.Dispose(); 
        newmap.Dispose(); 
        Response.End();

转载于:https://www.cnblogs.com/cooolbin/archive/2008/03/01/1087190.html

### 实现 Java Servlet 输出图片 为了实现从 URL 获取图片并通过 `HttpServletResponse` 对象将其输出到网页上,可以按照如下方式编写代码: #### 创建一个简单的Servlet类 该Servlet负责接收HTTP请求并处理图像资源。 ```java import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.IOException; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ImageServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置响应的内容类型为PNG格式的图片 response.setContentType("image/png"); try { // 使用ImageIO库中的read()函数可以从指定位置加载图片文件 BufferedImage image = ImageIO.read(new URL("http://example.com/path/to/image.png")); // 替换成实际的目标URL // 初始化字节数组输出流用于保存转换后的图片数据 ByteArrayOutputStream baos = new ByteArrayOutputStream(); // 将BufferedImage对象编码成PNG格式的数据流 ImageIO.write(image, "png", baos); byte[] imageData = baos.toByteArray(); // 设置响应头信息告知浏览器即将发送的数据大小 response.setContentLength(imageData.length); // 获得输出流向客户端传输二进制数据的对象 ServletOutputStream sos = response.getOutputStream(); // 向客户端写出图片数据 sos.write(imageData); // 刷新缓冲区确保所有数据都被发送出去 sos.flush(); // 关闭输出流释放资源 sos.close(); } catch (IOException e) { throw new ServletException(e.getMessage()); } } } ``` 此段代码展示了如何利用 `javax.imageio.ImageIO` 类读取远程URL上的图片,并通过 `HttpServletResponse` 的 `getOutputStream()` 方法将图片作为响应的一部分返回给客户端[^1]。此外,在设置好合适的MIME类型之后,还设置了响应内容长度以便于浏览器更好地解析接收到的信息[^2]。 #### 配置web.xml映射规则 为了让上述Servlet能够被正确调用,还需要配置相应的URL模式匹配关系。可以在项目的WEB-INF下的web.xml文件里加入以下片段: ```xml <servlet> <servlet-name>ImageServlet</servlet-name> <servlet-class>com.example.ImageServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ImageServlet</servlet-name> <url-pattern>/showImage</url-pattern> </servlet-mapping> ``` 这样当用户访问 `/showImage` 这样的路径时就会触发上面定义好的逻辑流程[^3]。 #### 注意事项 - 当涉及到网络连接操作时应当考虑异常情况的发生,因此在真实环境中应该增加更多的错误处理机制。 - 图片源链接应替换为有效的互联网地址或者是本地存储的位置。 - 若目标网站不允许跨域请求,则可能需要额外解决CORS(Cross-Origin Resource Sharing)问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值