Java Awt Image Java by API

import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.awt.image.BufferedImageOp;
import java.awt.image.ConvolveOp;
import java.awt.image.Kernel;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class MainClass extends JPanel {
  public void paint(Graphics g) {
    BufferedImage clone = emboss(createImage());
    
    g.drawImage(clone, 20,20,this);
  }
  public BufferedImage emboss(BufferedImage src) {
    int width = src.getWidth();
    int height = src.getHeight();
    BufferedImage dst;
    dst = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    for (int i = 0; i < height; i++)
      for (int j = 0; j < width; j++) {
        int upperLeft = 0;
        int lowerRight = 0;
        if (i > 0 && j > 0)
          upperLeft = src.getRGB(j - 1, i - 1);
        if (i < height - 1 && j < width - 1)
          lowerRight = src.getRGB(j + 1, i + 1);
        int redDiff = ((lowerRight >> 16) & 255) - ((upperLeft >> 16) & 255);
        int greenDiff = ((lowerRight >> 8) & 255) - ((upperLeft >> 8) & 255);
        int blueDiff = (lowerRight & 255) - (upperLeft & 255);
        int diff = redDiff;
        if (Math.abs(greenDiff) > Math.abs(diff))
          diff = greenDiff;
        if (Math.abs(blueDiff) > Math.abs(diff))
          diff = blueDiff;
        int grayColor = 128 + diff;
        if (grayColor > 255)
          grayColor = 255;
        else if (grayColor < 0)
          grayColor = 0;
        int newColor = (grayColor << 16) + (grayColor << 8) + grayColor;
        dst.setRGB(j, i, newColor);
      }
    return dst;
  }
  
  private BufferedImage createImage(){
    BufferedImage bufferedImage = new BufferedImage(200,200,BufferedImage.TYPE_INT_RGB);
    Graphics g = bufferedImage.getGraphics();
    g.drawString("www.rntsoft.com", 20,20);
    
    return bufferedImage;
  }
  public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.getContentPane().add(new MainClass());
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(200, 200);
    frame.setVisible(true);
  }
  
  
}