图片压缩方法:
public static byte[] compressImg(File imgFile,int width,int height){
if(imgFile.exists()){
byte[] buffer=null;
try{
Image bi=ImageIO.read(imgFile);
//BufferedImage tmpimg=ImageIO.read(imgFile);
//bi.getWidth(null);
ImageIcon icon=new ImageIcon(bi);
if((icon.getIconHeight()*icon.getIconWidth())>width*height){
int w=width;
int h=height;
int w1=icon.getIconWidth();
int h1=icon.getIconHeight();
//等比例缩放
if(w1/w>h1/h){
height=h1*w/w1;
}else{
width=w1*h/h1;
}
bi= bi.getScaledInstance(width,height,Image.SCALE_DEFAULT);
BufferedImage mBufferedImage = new BufferedImage(width,height ,BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = mBufferedImage.createGraphics();
g2.drawImage(bi, 0, 0,width, height, Color.white,null);
g2.dispose();
ImageIO.write(mBufferedImage,"jpg",imgFile);
}
//File outFile = null;
//BufferedImage tmpimg=(BufferedImage) bi;
// ImageIO.write(tmpimg, "jpg", imgFile);
buffer=new byte[(int) imgFile.length()];
InputStream is = new FileInputStream(imgFile);
is.read(buffer);
}catch(Exception e){
e.printStackTrace();
}
return buffer;
}else{
return null;
}
}
BASE64加密:
BASE64Encoder base64=new BASE64Encoder();
InputStream is=图片文件流,可以通过数据库读取;
if(is!=null){
byte imgdata[] = Utils.compressImg(is, 120, 150);
// byte imgdata1[]=get.switchInputStream(is);
String img=base64.encode(imgdata);
result.put("IMG", img);
}else{
result.put("IMG", null);
}
页面处理:
jsp1:
<img src="img.jsp?imgdata=<%=bo.getStringField("IMG")%>" width="120" height="150" border="0" style="border:1px solid #000000">
img.jsp代码:
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page import="java.io.*,sun.misc.BASE64Decoder,java.awt.image.*,cn.sz.iaspec.ddd.web.BaseValueObject,java.util.*,com.sun.image.codec.jpeg.JPEGCodec,com.sun.image.codec.jpeg.JPEGImageEncoder"%>
<%
String strdata=(String)request.getParameter("imgdata");
strdata=strdata.replaceAll(" ","+");//关键的地方,用get的方法传参会使"+"变成" ",所以需要进行替换
BASE64Decoder base=new BASE64Decoder();
byte img[]=base.decodeBuffer(strdata);
InputStream in = new ByteArrayInputStream(img);
BufferedImage image = javax.imageio.ImageIO.read(in);
out.clear();
out = pageContext.pushBody();
ServletOutputStream sos = response.getOutputStream();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(sos);
encoder.encode(image);
sos.close();
%>
分享到:
相关推荐
在Android开发中,有时我们需要将图片转换为Base64编码的形式以便在网络传输或者存储时使用。Base64编码是一种常见的二进制数据转化为文本的方法,它通过使用64个可打印字符来表示原本的二进制数据,使得数据可以在...
本程序聚焦于两个核心功能:图片的灰度处理和base64编码,这在数据传输、存储以及前端展示等方面有着广泛的应用。 一、图片灰度处理 灰度处理是一种常见的图像处理技术,它将彩色图像转化为单色图像,即每个像素...
在Excel中使用VBA(Visual Basic for Applications)解码BASE64编码的图片是一项常见的编程任务,特别是当你需要处理从网络或数据库中获取的BASE64格式的图像数据时。BASE64是一种用于将二进制数据转换为可打印ASCII...
在JavaScript(JS)中加载Base64编码的图片是一种常见的技术,特别是在动态创建或处理图像时。Base64是一种用于将二进制数据转换为文本格式的方法,以便可以在HTML和JavaScript中安全地传递。以下是对这个主题的详细...
其中,Base64编码是一种在网络上传输图像数据的方法,尤其在处理小尺寸图片或者作为纯文本传输时非常有用。在这个场景中,我们将讨论如何在H5移动端利用canvas技术将照片转化为Base64格式,并实现直接下载。 Base64...
### JSP Servlet 动态 Base64 编码图片显示处理 #### 为什么需要使用 Base64 图片信息 在 Web 开发过程中,有时需要将图片等二进制数据转换为文本格式进行传输或存储。Base64 是一种常见的编码方式,它能够将任意...
QT图片Base64编码与解码是C++编程中一种常见的技术,特别是在处理网络传输或者存储图片数据时。Base64是一种将二进制数据转换为可打印ASCII字符的编码方式,它通过特定的算法将每3个字节的数据转换为4个ASCII字符,...
在这个特定的场景中,我们关注的是如何在LabVIEW中处理图片,包括图片的缩放、Base64编码和解码。 1. **图片缩放**: 在LabVIEW中,你可以使用图像处理库来实现图片的缩放功能。这个库提供了各种图像操作函数,...
在本项目"VC++6.0使用base64编解码转图片"中,我们将探讨如何在Visual C++ 6.0环境下实现Base64编码和解码,并将其应用于图片处理。 首先,Base64编码的基本原理是将每3个8位字节(24位)的数据转换为4个6位字节...
在C++编程中,处理图片数据时,我们可能需要将图片转换为Base64编码,或者将Base64编码还原回原始图片。下面将详细介绍这个过程中的关键知识点。 首先,我们需要理解Base64编码的工作原理。Base64使用64个字符...
在IT领域,Base64是一种常见的数据编码方法,它用于将二进制数据转换成ASCII字符串,以便在不支持二进制传输的环境下(如电子邮件)进行传递。在这个"图片Base64字符串转图片工具代码"中,我们讨论的是如何使用...
在图像处理领域,Base64编码常用来将图片数据嵌入HTML或CSS代码中,避免了额外的HTTP请求,提高了页面加载速度。 在本项目中,"Base64转图片"是一个基于MFC(Microsoft Foundation Classes)开发的小工具,它实现了...
在图片处理中,base64编码可以将图片数据嵌入到HTML或CSS中,无需额外的HTTP请求,提高页面加载速度。 在jQuery中,我们可以使用`input[type="file"]`元素让用户选择图片文件。一旦文件被选中,可以通过`change`...
在IT领域,尤其是在Web开发和数据传输中,Base...总的来说,C++和OpenCV库为处理图片与Base64编码提供了强大支持,使开发者能够在各种场景下灵活地进行数据转换,例如在网络上传输图片数据或者在数据库中存储图片信息。
在Java编程中,图片Base64加密解密是一种常见的数据处理技术,特别是在网络传输和存储时,由于Base64编码可以将二进制数据转换为可打印的ASCII字符,因此非常适用。`sun.misc.BASE64Encoder`和`sun.misc.BASE64...
将Base64字符串转换为十六进制可以提供另一种查看和处理二进制数据的方法。有时,十六进制格式在某些场景下更方便,例如在调试或与其他系统交互时。 5. **Base64转图片**:如果Base64字符串代表的是图像数据,那么...
例如,你可以创建一个新的FileReader实例,调用其`readAsDataURL`方法,该方法会返回一个包含图片Base64编码的data URL。 ```javascript let fileInput = document.querySelector('input[type="file"]'); let ...
在IT行业中,图片Base64编码是一种常见的数据传输和存储方式,它将图片转换成文本字符串,便于在网络中传输,特别是在处理小程序等轻量级应用时尤为常见。OCR(Optical Character Recognition,光学字符识别)技术则...
总结来说,"Base64文件图片编码解码双向转换解析预览工具"是一款实用的应用,涵盖了Base64编码与解码的核心功能,特别适合于处理图片和文件的在线转换,而且其预览和暗色背景设计考虑了用户体验,使得处理透明图片...
此外,如果你有多个Base64编码的图片需要保存,可以考虑批量处理,以提高效率。 总的来说,通过理解Base64编码和.NET Framework提供的工具,我们可以方便地将Base64字符串转换为本地图片文件,这在许多Web应用和...