<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_by_API%2Fjava.awt.image%2FBufferedImage</id>
		<title>Java by API/java.awt.image/BufferedImage - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_by_API%2Fjava.awt.image%2FBufferedImage"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_by_API/java.awt.image/BufferedImage&amp;action=history"/>
		<updated>2026-04-26T13:05:00Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_by_API/java.awt.image/BufferedImage&amp;diff=913&amp;oldid=prev</id>
		<title> в 17:43, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_by_API/java.awt.image/BufferedImage&amp;diff=913&amp;oldid=prev"/>
				<updated>2010-05-31T17:43:48Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 17:43, 31 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_by_API/java.awt.image/BufferedImage&amp;diff=914&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_by_API/java.awt.image/BufferedImage&amp;diff=914&amp;oldid=prev"/>
				<updated>2010-05-31T14:22:36Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== BufferedImage: getSource() ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.Image;&lt;br /&gt;
import java.awt.image.BufferedImage;&lt;br /&gt;
import java.awt.image.FilteredImageSource;&lt;br /&gt;
import java.awt.image.RGBImageFilter;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
public class MainClass extends JPanel {&lt;br /&gt;
  public void paint(Graphics g) {&lt;br /&gt;
    NegativeFilter nf = new NegativeFilter();&lt;br /&gt;
    Image i = createImage(new FilteredImageSource(createImage().getSource(), nf));&lt;br /&gt;
    g.drawImage(i, 20, 20, this);&lt;br /&gt;
  }&lt;br /&gt;
  private BufferedImage createImage() {&lt;br /&gt;
    BufferedImage bufferedImage = new BufferedImage(200, 200, BufferedImage.TYPE_INT_RGB);&lt;br /&gt;
    Graphics g = bufferedImage.getGraphics();&lt;br /&gt;
    g.drawString(&amp;quot;www.jexp.ru&amp;quot;, 20, 20);&lt;br /&gt;
    return bufferedImage;&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame frame = new JFrame();&lt;br /&gt;
    frame.getContentPane().add(new MainClass());&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    frame.setSize(200, 200);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class NegativeFilter extends RGBImageFilter {&lt;br /&gt;
  public NegativeFilter() {&lt;br /&gt;
    canFilterIndexColorModel = true;&lt;br /&gt;
  }&lt;br /&gt;
  public int filterRGB(int x, int y, int rgb) {&lt;br /&gt;
    return rgb ^ 0x00ffffff;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== BufferedImage: setRGB(int startX, int startY, int w, int h, int[] rgbArray, int offset, int scansize) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.image.BufferedImage;&lt;br /&gt;
import javax.swing.JComponent;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
public class Main extends JComponent {&lt;br /&gt;
  public void paint(Graphics g) {&lt;br /&gt;
    int width = getSize().width;&lt;br /&gt;
    int height = getSize().height;&lt;br /&gt;
    int[] data = new int[width * height];&lt;br /&gt;
    int i = 0;&lt;br /&gt;
    for (int y = 0; y &amp;lt; height; y++) {&lt;br /&gt;
      int red = (y * 255) / (height - 1);&lt;br /&gt;
      for (int x = 0; x &amp;lt; width; x++) {&lt;br /&gt;
        int green = (x * 255) / (width - 1);&lt;br /&gt;
        int blue = 128;&lt;br /&gt;
        data[i++] = (red &amp;lt;&amp;lt; 16) | (green &amp;lt;&amp;lt; 8) | blue;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);&lt;br /&gt;
    image.setRGB(0, 0, width, height, data, 0, width);&lt;br /&gt;
    g.drawImage(image, 0, 0, this);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;ColorPan&amp;quot;);&lt;br /&gt;
    frame.getContentPane().add(new Main());&lt;br /&gt;
    frame.setSize(300, 300);&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== BufferedImage.TYPE_INT_RGB ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.image.BufferedImage;&lt;br /&gt;
import javax.swing.JComponent;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
public class ColorPan extends JComponent {&lt;br /&gt;
  public void paint(Graphics g) {&lt;br /&gt;
    int width = getSize().width;&lt;br /&gt;
    int height = getSize().height;&lt;br /&gt;
    int[] data = new int[width * height];&lt;br /&gt;
    int i = 0;&lt;br /&gt;
    for (int y = 0; y &amp;lt; height; y++) {&lt;br /&gt;
      int red = (y * 255) / (height - 1);&lt;br /&gt;
      for (int x = 0; x &amp;lt; width; x++) {&lt;br /&gt;
        int green = (x * 255) / (width - 1);&lt;br /&gt;
        int blue = 128;&lt;br /&gt;
        data[i++] = (red &amp;lt;&amp;lt; 16) | (green &amp;lt;&amp;lt; 8) | blue;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);&lt;br /&gt;
    image.setRGB(0, 0, width, height, data, 0, width);&lt;br /&gt;
    g.drawImage(image, 0, 0, this);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;ColorPan&amp;quot;);&lt;br /&gt;
    frame.getContentPane().add(new ColorPan());&lt;br /&gt;
    frame.setSize(300, 300);&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== BufferImage emboss ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.Image;&lt;br /&gt;
import java.awt.image.BufferedImage;&lt;br /&gt;
import java.awt.image.BufferedImageOp;&lt;br /&gt;
import java.awt.image.ConvolveOp;&lt;br /&gt;
import java.awt.image.Kernel;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
public class MainClass extends JPanel {&lt;br /&gt;
  public void paint(Graphics g) {&lt;br /&gt;
    BufferedImage clone = emboss(createImage());&lt;br /&gt;
    &lt;br /&gt;
    g.drawImage(clone, 20,20,this);&lt;br /&gt;
  }&lt;br /&gt;
  public BufferedImage emboss(BufferedImage src) {&lt;br /&gt;
    int width = src.getWidth();&lt;br /&gt;
    int height = src.getHeight();&lt;br /&gt;
    BufferedImage dst;&lt;br /&gt;
    dst = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);&lt;br /&gt;
    for (int i = 0; i &amp;lt; height; i++)&lt;br /&gt;
      for (int j = 0; j &amp;lt; width; j++) {&lt;br /&gt;
        int upperLeft = 0;&lt;br /&gt;
        int lowerRight = 0;&lt;br /&gt;
        if (i &amp;gt; 0 &amp;amp;&amp;amp; j &amp;gt; 0)&lt;br /&gt;
          upperLeft = src.getRGB(j - 1, i - 1);&lt;br /&gt;
        if (i &amp;lt; height - 1 &amp;amp;&amp;amp; j &amp;lt; width - 1)&lt;br /&gt;
          lowerRight = src.getRGB(j + 1, i + 1);&lt;br /&gt;
        int redDiff = ((lowerRight &amp;gt;&amp;gt; 16) &amp;amp; 255) - ((upperLeft &amp;gt;&amp;gt; 16) &amp;amp; 255);&lt;br /&gt;
        int greenDiff = ((lowerRight &amp;gt;&amp;gt; 8) &amp;amp; 255) - ((upperLeft &amp;gt;&amp;gt; 8) &amp;amp; 255);&lt;br /&gt;
        int blueDiff = (lowerRight &amp;amp; 255) - (upperLeft &amp;amp; 255);&lt;br /&gt;
        int diff = redDiff;&lt;br /&gt;
        if (Math.abs(greenDiff) &amp;gt; Math.abs(diff))&lt;br /&gt;
          diff = greenDiff;&lt;br /&gt;
        if (Math.abs(blueDiff) &amp;gt; Math.abs(diff))&lt;br /&gt;
          diff = blueDiff;&lt;br /&gt;
        int grayColor = 128 + diff;&lt;br /&gt;
        if (grayColor &amp;gt; 255)&lt;br /&gt;
          grayColor = 255;&lt;br /&gt;
        else if (grayColor &amp;lt; 0)&lt;br /&gt;
          grayColor = 0;&lt;br /&gt;
        int newColor = (grayColor &amp;lt;&amp;lt; 16) + (grayColor &amp;lt;&amp;lt; 8) + grayColor;&lt;br /&gt;
        dst.setRGB(j, i, newColor);&lt;br /&gt;
      }&lt;br /&gt;
    return dst;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  private BufferedImage createImage(){&lt;br /&gt;
    BufferedImage bufferedImage = new BufferedImage(200,200,BufferedImage.TYPE_INT_RGB);&lt;br /&gt;
    Graphics g = bufferedImage.getGraphics();&lt;br /&gt;
    g.drawString(&amp;quot;www.jexp.ru&amp;quot;, 20,20);&lt;br /&gt;
    &lt;br /&gt;
    return bufferedImage;&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame frame = new JFrame();&lt;br /&gt;
    frame.getContentPane().add(new MainClass());&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    frame.setSize(200, 200);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== new BufferedImage(int width, int height, int imageType) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.Image;&lt;br /&gt;
import java.awt.image.BufferedImage;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
public class MainClass extends JPanel {&lt;br /&gt;
  public void paint(Graphics g) {&lt;br /&gt;
    Image img = createImage();&lt;br /&gt;
    g.drawImage(img, 20,20,this);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame frame = new JFrame();&lt;br /&gt;
    frame.getContentPane().add(new MainClass());&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    frame.setSize(200, 200);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  private Image createImage(){&lt;br /&gt;
    BufferedImage bufferedImage = new BufferedImage(200,200,BufferedImage.TYPE_INT_RGB);&lt;br /&gt;
    Graphics g = bufferedImage.getGraphics();&lt;br /&gt;
    g.drawString(&amp;quot;www.jexp.ru&amp;quot;, 20,20);&lt;br /&gt;
    &lt;br /&gt;
    return bufferedImage;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>