java图片上传出现红色背景

java图片服务器上传图片都很正常,唯独上传png图片时,png图片变成红色背景

原因是读取上传数据时用的是ImageIO.read(inputstream)方法

public static BufferedImage getImages(byte[] data) throws IOException {

ByteArrayInputStream input = new ByteArrayInputStream(data);

return ImageIO.read(input);

}

解决办法是:换成jdk中的Toolkit来读取上传的数据

Image src=Toolkit.getDefaultToolkit().getImage(file.getPath());

BufferedImage image=BufferedImageBuilder.toBufferedImage(src); //Image to BufferedImage

或:

Image imageTookit = Toolkit.getDefaultToolkit().createImage(bytes);

BufferedImage cutImage = toBufferedImage(imageTookit);

toBufferedImage():

public static BufferedImage toBufferedImage(Image image) {

if (image instanceof BufferedImage) {

return (BufferedImage) image;

}

// This code ensures that all the pixels in the image are loaded

image = new ImageIcon(image).getImage();

BufferedImage bimage = null;

GraphicsEnvironment ge = GraphicsEnvironment

.getLocalGraphicsEnvironment();

try {

int transparency = Transparency.OPAQUE;

GraphicsDevice gs = ge.getDefaultScreenDevice();

GraphicsConfiguration gc = gs.getDefaultConfiguration();

bimage = gc.createCompatibleImage(image.getWidth(null),

image.getHeight(null), transparency);

} catch (HeadlessException e) {

// The system does not have a screen

}

if (bimage == null) {

// Create a buffered image using the default color model

int type = BufferedImage.TYPE_INT_RGB;

bimage = new BufferedImage(image.getWidth(null),

image.getHeight(null), type);

}

// Copy image to buffered image

Graphics g = bimage.createGraphics();

// Paint the image onto the buffered image

g.drawImage(image, 0, 0, null);

g.dispose();

return bimage;

}

java上传png_java上传png图片出现红色背景相关推荐

  1. java获取ajax上传的文件,Java使用Ajax异步上传文件

    相关代码示例: html代码片段: 名称 class="layui-input"> 描述 文件 请选择配置文件 立即提交 重置 js代码片段: //上传配置文件 $(&quo ...

  2. java语言 文件上传,java中实现文件上传的方法

    java中实现文件上传的方法 发布时间:2020-06-19 10:29:11 来源:亿速云 阅读:86 作者:Leah 这篇文章给大家分享的是java中实现文件上传的方法,相信大部分人都还没学会这个 ...

  3. Java通过FTP服务器上传下载文件的方法

    本文介绍了如何使用Apache Jakarta Commons Net(commons-net-3.3.jar)基于FileZilla Server服务器实现FTP服务器上文件的上传/下载/删除等操作 ...

  4. flex java red5_使用 Flex 和Java servlets 将文件上传到 RED5 服务器的步骤

    本文使用一个 demo 来演示如何使用 Flex 和 Java servlets 上传一个任意类型的本地文件到 RED5 服务器.使用的是 Flex 的 FileReference 接口,该接口可以对 ...

  5. java里面的文件上传与下载

    java里面的文件上传与下载 文件的上传与下载主要用到两种方法: 1.方法一:commons-fileupload.jar commons-io.jar apache的commons-fileuplo ...

  6. java实现多文件上传至本地服务器

    转载自  java实现多文件上传至本地服务器 博主最近在做一个内网项目,内部可以访问外部数据,但是外部访问不了内部数据,这也就造成了可能文件无法上传,所以博主另辟蹊径,在本地服务器上建立一个文件夹专门 ...

  7. java读excel乱码,【java 项目中,上传的excel打开时无法正常打开,显示乱码 ,怎样可以正常打开,】java读取excel乱码...

    java 项目中,上传的excel打开时无法正常打开,显示乱码 ,怎样可以正常打开, 1.转换格就是将受损的Excel XP簿另存格式选为SYLK.如果可以打开受件,只是不能进行各种编辑和打印操作,那 ...

  8. java 上传图片后没法立马显示出来_SpringMVC多个文件上传及上传后立即显示图片功能...

    多文件上传就是改良一个方法把MultipartFile类换成CommonsMultipartFile类,因为上传多个文件用数组方式的话MultipartFile类不能初始化,它不支持数组 packag ...

  9. java云服务器怎么上传文件大小,java云服务器怎么上传文件大小

    java云服务器怎么上传文件大小 内容精选 换一换 SAP S/4HANA实例节点数据磁盘需要进行格式化,并挂载到相应的目录后,才能被正常使用.登录待安装SAP S/4HANA的云服务器"s ...

最新文章

  1. 李开复对话Yoshua Bengio:AI技术的下一个突破
  2. MATLAB 图像函数(第五章) 图像空间变换和图像配准
  3. 关于PostMessage后台发送组合键
  4. perl one line
  5. 一个基于特征向量的近似网页去重算法
  6. Ubuntu 14.04 desktop 不能安装 openssh-server解决方法
  7. swun 1766 我的悲剧不可能那么好数
  8. CVE-2020-11946 ManageEngine OpManager 命令执行
  9. 纵横算法之五:想学算法,时间不够怎么办
  10. CentOS 7安装WRF,SMOKE,CMAQ
  11. rocketdock 打不开 有进程
  12. 飞凌单片机解密_GX28E01单片机解密
  13. Emoj cheat sheet
  14. 关于CASIO系列可编程计算器在公路施工测量中的应用
  15. android平板下架,小米平板电脑下架 号称最好用的安卓平板成绝唱
  16. C语言学习笔记11-结构体(struct、结构作为函数参数、结构数组)、联合体/共用体typedef; union(大、小端序)
  17. IE选项注册表控制大全
  18. JDBC详解(四):操作BLOB类型字段(超详解)
  19. Ubuntu桌面文件管理权限如何获得
  20. 怎么人像抠图?这几种抠图方法一看就会

热门文章

  1. java中除了跟数据相关的知识_Java的基本数据类型及知识介绍
  2. 手写tomcat socket closed_【消费电子】:重在阅读,新增手写 BOOX Nova Pro 体验评测...
  3. java map 实现 序列化,MapReduce序列化
  4. 什么影响oracle io,Oracle IO问题解析
  5. PHP实训笔记,【学习笔记19】实验吧 让我进去
  6. discuz viewthread.php,修改discuz论坛的标题header和footer
  7. 游戏详细设计说明书_宜家的说明书设计脑洞太大了!
  8. _Linux中功能强大的截图工具 - Flameshot
  9. 【转】医学影像处理相关知识整理(一)
  10. 【转】HTTP协议中PUT和POST使用区别