- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要为图像设置滤镜..我做这个:
int type = BufferedImage.TYPE_INT_RGB;
double panelHeight = frame.getHeight();
double panelWidth = frame.getWidth();
BufferedImage image = null;
try {
image = ImageIO.read(new File(frame.getURL()));
} catch (IOException e1) {
e1.printStackTrace();
}
int height = image.getHeight();
int width = image.getWidth();
for(int h=1; h < height-1; h++) {
for(int w=1; w < width-1;w++) {
float color = ((1f/9f*image.getRGB(w-1, h-1))+(1f/9f* image.getRGB(w, h-1))+(1f/9f* image.getRGB(w+1, h-1))+
(1f/9f* image.getRGB(w-1, h))+(1f/9f* image.getRGB(w, h))+(1f/9f* image.getRGB(w+1, h))+
(1f/9f* image.getRGB(w-1, h+1))-(1f/9f* image.getRGB(w, h+1))-(1f/9f* image.getRGB(w+1, h+1)));
image.setRGB(w, h,(int)color);
}
}
//save im into a file
frame.setFilteredImage(Resizer.resize(image, panelHeight, panelWidth));
frame 有我的图片的 url。我使用 frame.getURL()
结果我想用模糊滤镜看到我的图像,但它给了我
所以可能有人知道我在哪里犯了错误???
或者您可能知道另一种使用此类矩阵设置过滤器的好方法
最佳答案
使用模糊滤镜
public class Java2DExample extends JFrame {
private JMenu filterMenu = new JMenu("Image Filters");
private ImagePanel imagePanel;
private MyFilter invertFilter = new InvertFilter();
private MyFilter sharpenFilter = new SharpenFilter();
private MyFilter blurFilter = new BlurFilter();
private MyFilter colorFilter = new ColorFilter();
public Java2DExample() {
super("Java 2D Image Processing Demo");
imagePanel = new ImagePanel(Java2DExample.class.getResource("yourImage.png"));
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
filterMenu.setMnemonic('I');
JMenuItem originalMenuItem = new JMenuItem("Display Original");
originalMenuItem.setMnemonic('O');
originalMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent action) {
imagePanel.displayOriginalImage();
}
});
JMenuItem invertMenuItem = createMenuItem("Invert", 'I', invertFilter);
JMenuItem sharpenMenuItem = createMenuItem("Sharpen", 'S', sharpenFilter);
JMenuItem blurMenuItem = createMenuItem("Blur", 'B', blurFilter);
JMenuItem changeColorsMenuItem = createMenuItem("Change Colors", 'C', colorFilter);
filterMenu.add(originalMenuItem);
filterMenu.add(invertMenuItem);
filterMenu.add(sharpenMenuItem);
filterMenu.add(blurMenuItem);
filterMenu.add(changeColorsMenuItem);
menuBar.add(filterMenu);
getContentPane().add(imagePanel, BorderLayout.CENTER);
}
public JMenuItem createMenuItem(String menuItemName, char mnemonic, final MyFilter filter) {
JMenuItem menuItem = new JMenuItem(menuItemName);
menuItem.setMnemonic(mnemonic);
menuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent action) {
imagePanel.applyFilter(filter);
}
});
return menuItem;
}
public static void main(String args[]) {
Java2DExample application = new Java2DExample();
application.setDefaultCloseOperation(EXIT_ON_CLOSE);
application.pack();
application.setVisible(true);
}
}
interface MyFilter {
public abstract BufferedImage processImage(BufferedImage image);
}
class BlurFilter implements MyFilter {
public BufferedImage processImage(BufferedImage image) {
float[] blurMatrix = { 1.0f / 9.0f, 1.0f / 9.0f, 1.0f / 9.0f, 1.0f / 9.0f, 1.0f / 9.0f,
1.0f / 9.0f, 1.0f / 9.0f, 1.0f / 9.0f, 1.0f / 9.0f };
BufferedImageOp blurFilter = new ConvolveOp(new Kernel(3, 3, blurMatrix),
ConvolveOp.EDGE_NO_OP, null);
return blurFilter.filter(image, null);
}
}
class ImagePanel extends JPanel {
private BufferedImage displayImage;
private BufferedImage originalImage;
private Image image;
public ImagePanel(URL imageURL) {
image = Toolkit.getDefaultToolkit().createImage(imageURL);
MediaTracker mediaTracker = new MediaTracker(this);
mediaTracker.addImage(image, 0);
try {
mediaTracker.waitForAll();
} catch (InterruptedException e) {
e.printStackTrace();
}
originalImage = new BufferedImage(image.getWidth(null), image.getHeight(null),
BufferedImage.TYPE_INT_RGB);
displayImage = originalImage;
Graphics2D graphics = displayImage.createGraphics();
graphics.drawImage(image, null, null);
}
public void applyFilter(MyFilter filter) {
displayImage = filter.processImage(displayImage);
repaint();
}
public void displayOriginalImage() {
displayImage = new BufferedImage(image.getWidth(null), image.getHeight(null),
BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = displayImage.createGraphics();
graphics.drawImage(originalImage, null, null);
repaint();
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D graphics = (Graphics2D) g;
graphics.drawImage(displayImage, 0, 0, null);
}
public Dimension getPreferredSize() {
return new Dimension(displayImage.getWidth(), displayImage.getHeight());
}
public Dimension getMinimumSize() {
return getPreferredSize();
}
}
class SharpenFilter implements MyFilter {
public BufferedImage processImage(BufferedImage image) {
float[] sharpenMatrix = { 0.0f, -1.0f, 0.0f, -1.0f, 5.0f, -1.0f, 0.0f, -1.0f, 0.0f };
BufferedImageOp sharpenFilter = new ConvolveOp(new Kernel(3, 3, sharpenMatrix),
ConvolveOp.EDGE_NO_OP, null);
return sharpenFilter.filter(image, null);
}
}
class InvertFilter implements MyFilter {
public BufferedImage processImage(BufferedImage image) {
byte[] invertArray = new byte[256];
for (int counter = 0; counter < 256; counter++)
invertArray[counter] = (byte) (255 - counter);
BufferedImageOp invertFilter = new LookupOp(new ByteLookupTable(0, invertArray), null);
return invertFilter.filter(image, null);
}
}
class ColorFilter implements MyFilter {
public BufferedImage processImage(BufferedImage image) {
float[][] colorMatrix = { { 1f, 0f, 0f }, { 0.5f, 1.0f, 0.5f }, { 0.2f, 0.4f, 0.6f } };
BandCombineOp changeColors = new BandCombineOp(colorMatrix, null);
Raster sourceRaster = image.getRaster();
WritableRaster displayRaster = sourceRaster.createCompatibleWritableRaster();
changeColors.filter(sourceRaster, displayRaster);
return new BufferedImage(image.getColorModel(), displayRaster, true, null);
}
}
引用:http://www.java2s.com/Code/Java/2D-Graphics-GUI/ImageFilter.htm
关于java - 在 Swing 中向图像添加滤镜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12541081/
我正在使用 Inkscape 0.91。我想使用 Filters -> ABC 的 Noise Transparency 效果,但此较高版本的 Inkscape 中不存在该效果。我在网上看到,在更高的
SVG 滤镜 可以给 SVG 图形的添加特殊效果 SVG 滤镜 SVG有很多的滤镜,但本教程只会展示其中的两三种,其他的需要你可以依葫芦画瓢的使用 我们只需要记住 SVG 能提供什么样的滤镜,然
前言 本文主要给大家介绍了关于ios图片压缩、滤镜、剪切及渲染的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 主要内容: 1、图片基础知识的介绍 2、图片压缩
我想使用 VP8 在我的应用程序中编码视频。我在我的应用程序中使用 RGB24 格式,但 VP8 DirectShow 过滤器只接受 YUV 格式 (http://www.webmproject.or
我想要一个带有白色外发光的黑色文本,以便在彩色 map 上可读。这就是我以前所做的: Harald's Repose Harald's Repose 我想避免重复文本元素,因
如果我使用 camanJS 在图像上应用滤镜,一切都很好,但是当我单击第二个滤镜时,它需要返回到原始图像并将其应用到该图像上,但目前它将第二个滤镜放在仍具有第一个滤镜的图像。 这是我的 html 部分
我有 3 个 System.Drawing.Bitmap 对象。 RGB 前景、RGB 背景和每像素蒙版图像一个字节,其中 0 表示采用背景像素,1 表示采用前景像素。这三个都是相同的维度。 我选择使
谁能确认 Android BlurMaskFilter方法基于高斯模糊(而不是平均模糊)?我真的很惊讶这里的文档并不明确。 最佳答案 引用代码here ,我可以假设它是基于高斯模糊方法。 我完全同意您
本质上,我正在尝试使用 SVG 和 CSS ( like this ) 创建一个渐变 alpha 蒙版,因为 mask 属性是 no longer on the standards跟踪我正在探索 fi
我正在使用CSSGram在我的网站上使图像具有类似 Instagram 的滤镜。下面是向图像添加滤镜的方法: 如何将这种效果添加到网页中的所有图像,而不是使用 在每个图像之前,以及许多图像
我有一组带有背景图像的元素,这些元素上有一个 SVG 滤镜,使背景图像变灰。我需要它,以便当您将鼠标悬停在该元素上时,该 SVG 滤镜会淡化为透明,因此原始彩色图像会在没有滤镜的情况下显示。不幸的是,
如何访问 OpenCV 扩展图像处理模块?我特别需要一个过滤器:fastGlobalSmootherFilter。 我已将 OpenCV 3.2.0 合并到我的 C++ 项目中。我正在寻找这种方法:
看看下面的 CodePen 演示:http://codepen.io/anon/pen/vLPGpZ 这是我的代码: body { position: absolute; top:
请建议我如何在 Android 相机的运行时应用照片效果/滤镜?无需使用 JNI 、 OpenGl 和 open CV 。我只需要通过 Java 代码应用效果。 最佳答案 步骤 1. 将帧从 NV21
我正在尝试沿着特定路径在 Opengl 中渲染点 Sprite 。我将 Sprite 定义为 2D 纹理,并将其设置为使用 GL_NEAREST 作为 mag/min 过滤器。我还定义了一个包含一些
我想实现这样的目标: 此图片来自this应用程序。 我的问题是,我应该依赖像 this 这样的东西吗? ,自己做,或者即使有其他一些我不知道的第三个库,也可以推荐。 我试图获得更多的意见,而不是实际的
我使用 Pixastic 来更改 Canvas 上图像的亮度和对比度等简单效果。 但是,我一直没能找到将这些效果一起应用的方法。例如。应用亮度然后在这个已经变亮的图像上应用对比度,而不是原始图像。 使
我在使用 Core image 时遇到了问题。我正在做的是从 UIImageView 获取图像,然后使用我在教程中找到的一些代码(我是核心图像的新手)但是我想在我尝试时将棕褐色图像放回同一个 UIIm
我这里有一张图片: 我想在网站 theverge.com 中复制 css 样式(见下图) 我将在我的博客(主页)中使用它,因为我正在尝试复制 theverge.com 网站的内容。这就像在半透明渐变和
我想使用聚光灯效果,但它似乎只在 Chrome 中有效,在 Firefox 中看起来“刚刚好”,但在 Safari 中无法定位 (x,y,z)。 (其他浏览器未测试) 我尝试了不同的滤镜和原始单位,虽
我是一名优秀的程序员,十分优秀!