- 浏览: 476263 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
谢谢你的祝福:
特地登陆上来感谢一下楼主,解决问题。
ORA-04098: 触发器无效且未通过重新验证问题 -
fuqiangjava:
写的不错 解决了自己的一个问题 谢谢了
ORA-00001:unique constraint (oracle 10g) -
hujinhuhujinhu:
make ...我有1.6.23
MyEclipse6.5安装自动提示功能的jQuery插件步骤 -
fool2011:
学习下,博主
JFreeChart类生成折线图的Java源代码 -
814687491:
你不是说的JQUERY吗?
MyEclipse6.5安装自动提示功能的jQuery插件步骤
import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.Iterator; import javax.imageio.ImageIO; import javax.imageio.ImageWriter; import javax.imageio.stream.ImageOutputStream; import java.awt.Dimension; import java.awt.image.PixelGrabber; import java.util.Locale; import javax.imageio.IIOImage; import javax.imageio.ImageWriteParam; import javax.imageio.plugins.jpeg.JPEGImageWriteParam; /** * 将图片1.jpg缩小为图片test.jpg。 */ public class TestImage { public static void main(String[] args) throws Exception, IOException { ImageIO.write(ImageUtils.resizeImage("e:\\1.jpg", ImageUtils.IMAGE_GIF, 30, 20), "JPEG", new FileOutputStream("e:\\test.jpg")); } } class ImageUtils { public static final int IMAGE_UNKNOWN = -1; public static final int IMAGE_JPEG = 0; public static final int IMAGE_PNG = 1; public static final int IMAGE_GIF = 2; /** * Resizes an image * * @param imgName * The image name to resize. Must be the complet path to the file * @param type * int * @param maxWidth * The image's max width * @param maxHeight * The image's max height * @return A resized <code>BufferedImage</code> */ public static BufferedImage resizeImage(String imgName, int type, int maxWidth, int maxHeight) { try { return resizeImage(ImageIO.read(new File(imgName)), type, maxWidth, maxHeight); } catch (IOException e) { e.printStackTrace(); return null; } } /** * Resizes an image. * * @param image * The image to resize * @param maxWidth * The image's max width * @param maxHeight * The image's max height * @return A resized <code>BufferedImage</code> * @param type * int */ public static BufferedImage resizeImage(BufferedImage image, int type, int maxWidth, int maxHeight) { Dimension largestDimension = new Dimension(maxWidth, maxHeight); // Original size int imageWidth = image.getWidth(null); int imageHeight = image.getHeight(null); float aspectRatio = (float) imageWidth / imageHeight; if (imageWidth > maxWidth || imageHeight > maxHeight) { if ((float) largestDimension.width / largestDimension.height > aspectRatio) { largestDimension.width = (int) Math .ceil(largestDimension.height * aspectRatio); } else { largestDimension.height = (int) Math .ceil(largestDimension.width / aspectRatio); } imageWidth = largestDimension.width; imageHeight = largestDimension.height; } return createHeadlessSmoothBufferedImage(image, type, imageWidth, imageHeight); } /** * Saves an image to the disk. * * @param image * The image to save * @param toFileName * The filename to use * @param type * The image type. Use <code>ImageUtils.IMAGE_JPEG</code> to * save as JPEG images, or <code>ImageUtils.IMAGE_PNG</code> to * save as PNG. * @return <code>false</code> if no appropriate writer is found */ public static boolean saveImage(BufferedImage image, String toFileName, int type) { try { return ImageIO.write(image, type == IMAGE_JPEG ? "jpg" : "png", new File(toFileName)); } catch (IOException e) { e.printStackTrace(); return false; } } /** * Compress and save an image to the disk. Currently this method only * supports JPEG images. * * @param image * The image to save * @param toFileName * The filename to use * @param type * The image type. Use <code>ImageUtils.IMAGE_JPEG</code> to * save as JPEG images, or <code>ImageUtils.IMAGE_PNG</code> to * save as PNG. */ public static void saveCompressedImage(BufferedImage image, String toFileName, int type) { try { if (type == IMAGE_PNG) { throw new UnsupportedOperationException( "PNG compression not implemented"); } Iterator iter = ImageIO.getImageWritersByFormatName("jpg"); ImageWriter writer; writer = (ImageWriter) iter.next(); ImageOutputStream ios = ImageIO.createImageOutputStream(new File( toFileName)); writer.setOutput(ios); ImageWriteParam iwparam = new JPEGImageWriteParam(Locale .getDefault()); iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); iwparam.setCompressionQuality(0.7F); writer.write(null, new IIOImage(image, null, null), iwparam); ios.flush(); writer.dispose(); ios.close(); } catch (IOException e) { e.printStackTrace(); } } /** * Creates a <code>BufferedImage</code> from an <code>Image</code>. * This method can function on a completely headless system. This especially * includes Linux and Unix systems that do not have the X11 libraries * installed, which are required for the AWT subsystem to operate. This * method uses nearest neighbor approximation, so it's quite fast. * Unfortunately, the result is nowhere near as nice looking as the * createHeadlessSmoothBufferedImage method. * * @param image * The image to convert * @param w * The desired image width * @param h * The desired image height * @return The converted image * @param type * int */ public static BufferedImage createHeadlessBufferedImage( BufferedImage image, int type, int width, int height) { if (type == ImageUtils.IMAGE_PNG && hasAlpha(image)) { type = BufferedImage.TYPE_INT_ARGB; } else { type = BufferedImage.TYPE_INT_RGB; } BufferedImage bi = new BufferedImage(width, height, type); for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { bi.setRGB(x, y, image.getRGB(x * image.getWidth() / width, y * image.getHeight() / height)); } } return bi; } /** * Creates a <code>BufferedImage</code> from an <code>Image</code>. * This method can function on a completely headless system. This especially * includes Linux and Unix systems that do not have the X11 libraries * installed, which are required for the AWT subsystem to operate. The * resulting image will be smoothly scaled using bilinear filtering. * * @param source * The image to convert * @param w * The desired image width * @param h * The desired image height * @return The converted image * @param type * int */ public static BufferedImage createHeadlessSmoothBufferedImage( BufferedImage source, int type, int width, int height) { if (type == ImageUtils.IMAGE_PNG && hasAlpha(source)) { type = BufferedImage.TYPE_INT_ARGB; } else { type = BufferedImage.TYPE_INT_RGB; } BufferedImage dest = new BufferedImage(width, height, type); int sourcex; int sourcey; double scalex = (double) width / source.getWidth(); double scaley = (double) height / source.getHeight(); int x1; int y1; double xdiff; double ydiff; int rgb; int rgb1; int rgb2; for (int y = 0; y < height; y++) { sourcey = y * source.getHeight() / dest.getHeight(); ydiff = scale(y, scaley) - sourcey; for (int x = 0; x < width; x++) { sourcex = x * source.getWidth() / dest.getWidth(); xdiff = scale(x, scalex) - sourcex; x1 = Math.min(source.getWidth() - 1, sourcex + 1); y1 = Math.min(source.getHeight() - 1, sourcey + 1); rgb1 = getRGBInterpolation(source.getRGB(sourcex, sourcey), source.getRGB(x1, sourcey), xdiff); rgb2 = getRGBInterpolation(source.getRGB(sourcex, y1), source .getRGB(x1, y1), xdiff); rgb = getRGBInterpolation(rgb1, rgb2, ydiff); dest.setRGB(x, y, rgb); } } return dest; } private static double scale(int point, double scale) { return point / scale; } private static int getRGBInterpolation(int value1, int value2, double distance) { int alpha1 = (value1 & 0xFF000000) >>> 24; int red1 = (value1 & 0x00FF0000) >> 16; int green1 = (value1 & 0x0000FF00) >> 8; int blue1 = (value1 & 0x000000FF); int alpha2 = (value2 & 0xFF000000) >>> 24; int red2 = (value2 & 0x00FF0000) >> 16; int green2 = (value2 & 0x0000FF00) >> 8; int blue2 = (value2 & 0x000000FF); int rgb = ((int) (alpha1 * (1.0 - distance) + alpha2 * distance) << 24) | ((int) (red1 * (1.0 - distance) + red2 * distance) << 16) | ((int) (green1 * (1.0 - distance) + green2 * distance) << 8) | (int) (blue1 * (1.0 - distance) + blue2 * distance); return rgb; } /** * Determines if the image has transparent pixels. * * @param image * The image to check for transparent pixel.s * @return <code>true</code> of <code>false</code>, according to the * result */ public static boolean hasAlpha(Image image) { try { PixelGrabber pg = new PixelGrabber(image, 0, 0, 1, 1, false); pg.grabPixels(); return pg.getColorModel().hasAlpha(); } catch (InterruptedException e) { return false; } } }
发表评论
-
Applet画图修改中。。。
2010-01-13 21:00 2344效果如下图: import java.applet.A ... -
Applet画图程序
2010-01-11 14:18 1763双击右键才显示功能菜单。。。 import java ... -
Applet打印
2009-11-23 15:56 2081效果如上图: import java.awt.*; i ... -
applet数字签名实践篇三(转载)
2009-11-17 18:56 2068最近在研究applet,打算使用applet来开发一个上传文件 ... -
applet数字签名实践篇二(转载)
2009-11-17 18:45 1366【摘 要】如果你要考虑在Internet上实现这个Applet ... -
applet数字签名实践篇一(转载)
2009-11-17 18:44 1563本人在报表开发之时, ... -
Applet与Servlet通信
2009-11-13 17:42 1194在今天的多层结构的web应用程序的设计中,我们可以同时使用Ja ... -
使用 Java applet 访问远程 Web 服务
2009-11-13 10:35 1911通过浏览器提交、接收和分析 XML Web 服务消息 ... -
利用Applet进行Web打印
2009-11-07 17:45 1960一web打印常见方法: 1,一种简单的方法是在html上调用w ... -
applet应用小技巧
2009-11-06 13:29 10551。获取屏幕分辩率的宽和高: int width=To ... -
applet图像的处理
2009-11-03 16:08 2080设置呈现(RenderingHints)提示 8.2 ... -
applet绘制纹理图
2009-11-03 16:04 1171其效果如下图: import java.applet.*; ... -
applet中保存canvas中的图片
2009-11-02 15:36 1631效果图如下: import java.awt.*; ... -
applet画图板程序(画直线、画圆、画笔、画矩形、调色板)
2009-10-27 17:08 5084import java.applet.*; import j ... -
applet画图板程序
2009-10-27 17:00 2056import java.applet.Applet; imp ... -
applet的简单流程图绘制小工具
2009-10-27 16:58 1925使用说明如下: 1.在主区域的上面有一个写有"dr ... -
applet文字和图标的合成
2009-10-24 17:43 1625相信大家平时碰到过一些在JAVA中对图像进行处理的需求,比如需 ... -
运行applet时出现无法载入class的问题,以及设置codeBase
2009-08-13 17:57 2394最简单的方法就是:把它们放在同一个目录就不用设置啦。。。,但是 ... -
IE中Applet不能运行的问题
2009-08-13 17:49 2169applet程序正常没问题,在Html页面中的设置也没问题,只 ... -
Applet 双缓冲技术
2009-07-23 17:32 1564import java.applet.Applet; imp ...
相关推荐
显示背景图片和区域数据. 区域透明填充. 人机交互: 移动; 缩放, 复原; 程序交互: 点击, 进入, 离开区域时回调javascript; 运行时可用javascript装载图形,修改区域参数;
5. **交互功能**:Applet可以响应用户的鼠标和键盘事件,因此我们可以为三维图形添加交互功能,例如旋转、缩放或切换视图。这需要在Applet类中添加事件监听器,并根据用户操作更新图形的状态。 6. **优化与性能**:...
根据提供的文件信息,我们可以总结出以下关于“Java图片缩放类”的相关知识点: ### Java 图片缩放类概述 在Java开发中,处理图像时经常需要进行缩放操作以适应不同的显示需求或优化资源占用。Java 提供了多种库来...
3. **图形缩放**: `Graphics2D`类提供了缩放功能,通过调用`scale()`方法可以改变图形的大小。如果要保持原图的比例,可以使用`AffineTransform`对象。 ```java g2.scale(scaleFactorX, scaleFactorY); // 缩放...
1. **Java源代码**:Applet的实现类,包括JFreeChart的初始化和绘图逻辑。 2. **HTML文件**:包含嵌入Applet的HTML页面,定义了Applet的属性和参数。 3. **JFreeChart库文件**:可能包含了JFreeChart库的JAR文件,...
Java Applet中的`paint()`方法接收一个`Graphics`对象参数,我们可以利用这个对象绘制图形。在每一帧中,我们清除屏幕并重新绘制物体的新位置,模拟物体的移动。例如: ```java public void paint(Graphics g) { ...
在Java编程语言中,Applet是特殊类型的类,可以通过HTML页面嵌入到Web浏览器中,为用户提供交互式的图形界面体验。 在Java Applet中进行图像处理,主要涉及到以下几个核心知识点: 1. **Java AWT和Swing库**:Java...
在早期的网页开发中,Applet被广泛用于创建动态图形、游戏以及像图片浏览这样的多媒体应用。本项目"图片浏览小程序(java+applet)"正是利用了这一特性,旨在为用户构建一个轻量级的在线图片查看工具。 首先,我们...
一个Applet通常继承自`java.applet.Applet`类,这个类提供了运行Applet所需的基本功能。以下是一个简单的Applet示例: ```java import java.applet.*; import java.awt.*; public class ShowImageApplet extends ...
但理解如何在Applet中处理图像仍然是学习Java图形用户界面编程的一个重要环节。 总之,通过使用Java的`Image`和`Graphics`类,以及适当的HTML嵌入,你可以在Applet小程序中显示图片,提供一种在Web页面中交互式展示...
接下来,我们有两类容器组件:一般容器和专用容器。一般容器如JPane、JScrollPane、JSplitPane、JTabbedPane和JToolBar,它们用于组织和管理其他组件。JPane是基本的容器,可以添加任何组件;JScrollPane为组件提供...
在描述中提到的"javaapplet小游戏"可能包含了一些简单的游戏程序,如猜数字、扫雷等,这些游戏通常利用了Java的图形用户界面(GUI)组件和事件处理机制。开发者可以利用Java的AWT(Abstract Window Toolkit)或Swing...
5. 变形功能:Drawlet Applet支持图形的变形操作,如旋转、缩放和移动。这通常通过计算图形的变换矩阵来实现。 6. 存储和加载:用户可能希望保存他们的作品或加载之前创建的图形。Drawlet需要实现序列化和反序列化...
在Canvas类中,可以象在Applet中那样绘制各种图形。 7. 图像的加载和显示 图像的加载和显示是异步进行的,图像的生产者(ImageProducer)传递给图像的消费者(ImageConsumer)一个与图像相关的位,因为图像的生产过程...
- `Applet`类:所有Applet的基类,继承自`java.applet.Applet`。 - `<applet>`标签:在HTML中嵌入Applet的语法,包含`width`和`height`属性,以及`code`属性指定Applet的主类。 2. **编程技巧**: - 布局管理:...
Java Applet小程序是一种嵌入在HTML页面中的小型Java程序,常用于增强网页的交互性,如显示动态图像、实现...同时,也可以探索如何利用Java的`ImageIO`和`Graphics`类进行更复杂的图像操作,比如旋转、缩放和裁剪等。
- **图形绘制**:利用Java的Graphics类进行基本的图形绘制,如矩形、线条等,也可以使用BufferedImage类来处理图片数据。 - **事件处理**:通过监听器模式处理用户的输入事件,例如鼠标点击、键盘按键等。 - **...
SVG(Scalable Vector Graphics)是一种基于XML的矢量图像格式,它允许无损缩放,适用于各种屏幕尺寸和分辨率,特别是在Android开发中,使用SVG可以确保图形在不同设备上保持清晰。然而,Android原生并不直接支持SVG...
`jGraph`的强大之处在于它的灵活性和易用性,开发者可以通过简单的代码就能实现复杂的图形绘制,同时支持各种图形操作,如拖放、缩放、旋转等。此外,`jGraph`还支持XML格式的数据交换,使得图形数据的存储和读取...
总结来说,这个“图片浏览小程序”项目涵盖了Java基础、Applet生命周期管理、GUI编程(Swing/AWT)、I/O流、图像处理、事件处理以及可能的Java 2D图形操作。随着Java Applet的过时,现代Web开发更倾向于使用...