`
弧形弹道
  • 浏览: 3873 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

关于java截图并压缩的一个小问题的个人理解

阅读更多
使用ava.awt.Graphics类中的 public abstract boolean drawImage(Image img,
                                  int dx1,
                                  int dy1,
                                  int dx2,
                                  int dy2,
                                  int sx1,
                                  int sy1,
                                  int sx2,
                                  int sy2,
                                  Color bgcolor,
                                  ImageObserver observer)
方法截图之后,再将图片压缩到指定大小。很容易出现截取的图片只占压缩后图片很小一部分,其他大部分都是黑边的情况。
  经过求证,个人认为出现该情况的原因是:源矩形的第一个坐标被映射到目标矩形的第一个坐标,第二个源坐标被映射到第二个目标坐标。按需要缩放和翻转子图像以保持这些映射关系。
  如果源矩形的第二个坐标与目标矩形的第二个坐标值相同,那么截取的图片将会填充目标矩形的一部分,等同于源矩形被截取的部分。而图片压缩时,会以原图片的尺寸作为参照来压缩,而截取的图片只占有原图尺寸的一小部分,所以大部分没有被覆盖到的像素就被黑色填充,所以压缩之后的图片会出现大量的黑边。

解决方案:将目标矩形的第二个坐标设置为原图片的相同位置的坐标即可。这样截取到的图片会自动填充到原图片大小,原图尺寸内就没有未被填充的像素,图片压缩之后就会不会出现黑边的情况了。
分享到:
评论

相关推荐

    gif图片压缩(纯java实现,不依赖第三方类库)

    在IT行业中,图片压缩是一个常见的需求,特别是在网络传输和存储方面。本话题聚焦于使用纯Java实现GIF图片的压缩,不依赖任何第三方类库。这样的实现方式对于那些需要在资源有限或者对性能有特殊要求的环境中工作的...

    仿zip压缩软件的java代码|zip.rar

    进度条功能是通过多线程实现的,通常会创建一个单独的线程来监控压缩或解压缩的进度,并更新GUI中的进度条组件。`javax.swing.JFrame`是Java Swing库的一部分,用于创建GUI,其中可以添加`JProgressBar`组件来显示...

    java源码包---java 源码 大量 实例

     用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字  Java波浪文字,一个利用...

    129个Java项目源码下载 [共分20个压缩卷] 【11】.zip

    标题中的"129个Java项目源码下载 [共分20个压缩卷] 【11】.zip"表明这是一个包含多个Java项目的源代码集合,这些项目被分成了20个压缩文件,而当前文件是第11个压缩卷。这通常意味着这是一个大型的Java学习资源,...

    JAVA写的个人博客源码

    这个列表可能表示压缩包内的主要文件或目录,"JAVA写的个人博客源码"很可能是一个包含所有源代码的主文件夹,而"1"可能是另一个文件或者子目录,具体用途需要解压后查看。通常,一个Java Web项目会包含以下部分: 1...

    java打包解压缩代码

    下面是一个简单的Java程序,用于打包目录中的所有文件到一个JAR文件: ```java import java.io.*; import java.util.jar.*; public class JarPackager { public static void main(String[] args) { String ...

    java源码包2

     用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字  Java波浪文字,一个利用...

    Java个人学习小结

    ### Java个人学习小结 #### Java发展史及重要里程碑 - **起源与发展**: Java 的起源可以追溯到 1992 年,当时的 Sun Microsystems 公司开发了一种名为 Oak 的编程语言,最初是为了家用电器的智能化而设计的。然而...

    基于JAVA实现的文件压缩与解压缩实践(源代码+论文).zip

    总的来说,这个项目为学习者提供了一个实践平台,通过亲手编写和调试代码,加深对Java文件操作和压缩算法的理解,是提升个人技术能力的良好途径。同时,项目中的论文部分也能帮助学习者系统性地了解相关知识,为今后...

    java源码包3

     用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字  Java波浪文字,一个利用...

    java的一些个人小工具包

    总的来说,这个"java的一些个人小工具包"是一个提升开发效率、简化编程任务的实用资源,通过封装常用功能,让开发者可以更专注于业务逻辑,而不是基础操作。在深入研究这个工具包的源代码后,我们可以学习到作者的...

    java个人管理程序

    【Java个人管理程序】是一个基于Java编程语言开发的轻量级应用,主要目的是帮助用户进行个人事务的管理和组织。这个程序巧妙地集成了Java对XML的处理能力,展现了Java在数据存储和读取上的灵活性。它采用了MVC...

    自己做的java小项目

    【标题】"自己做的java小项目"涉及到的是一款基于Java编程语言开发的个人项目,它可能是一个简单的应用程序或系统,展示了作者对Java编程语言的理解和应用能力。在Java编程领域,这样的小型项目通常用于学习、实践...

    JAVA每日一题11

    【标题】"JAVA每日一题11"是一个关于Java编程的日常练习问题,可能是从某个技术社区或博客中提取的。通常,这类题目旨在帮助开发者巩固基础,提升技能,或者探讨一些特定的Java编程概念。从提供的信息来看,我们无法...

    一个用java编写的通讯录

    本篇我们将深入探讨一个使用Java语言编写的通讯录系统,了解其核心功能与实现原理。 通讯录系统通常用于存储个人或组织的联系人信息,包括姓名、电话、邮箱等关键数据。这个Java编写的通讯录系统,不仅具备基本的...

    用Java做一个管理Kugou下载的歌的小工具

    【标题】:“用Java做一个管理Kugou下载的歌的小工具” 这个项目是关于使用Java编程语言开发一个小型应用程序,它的主要功能是管理和处理从酷狗音乐平台下载的歌曲。酷狗音乐是中国知名的数字音乐服务提供商,提供...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java编写的显示器显示模式检测程序 2个目标文件 内容索引:JAVA源码,系统相关,系统信息检测 用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作...

    学生管理系统源码(java小程序)

    这意味着学生数据很可能存储在一个名为"xuesheng"的数据库中,日志文件用于确保数据一致性并支持恢复操作。"stuManage"可能是学生管理模块的主程序或者源代码文件,负责处理学生信息的增删改查等操作。 综合以上...

    JAVA写的个人博客源码Java实用源码整理learns

    标题中的“JAVA写的个人博客源码Java实用源码整理learns”表明这是一份与Java编程相关的资源,特别地,它包含了一个个人博客系统的源代码。这个博客系统可能由Java语言编写,是学习和理解Java web开发的一个良好实践...

    java调用并口打印机

    2. **使用第三方库**:例如,`jzlib`是一个开源的Java压缩库,虽然它主要设计用于处理压缩和解压缩,但有时可以被扩展以处理其他类型的I/O操作。尽管如此,目前没有现成的库专门用于Java并口打印机控制。 3. **操作...

Global site tag (gtag.js) - Google Analytics