JAVA İLE RESİM İŞLEMLERİ

Java ile Windows forma resim eklemek, resmi yeniden boyutlandırmak. Java’da resmi yuvarlak yapmak. Label etiketi ile resim gösterimi. Forma panel ekleme. Örnek program.


Hangi dil olursa olsun Windows Formları üzerine program yapmaya başlayanların ilk yapmaya çalıştıkları şey forma birkaç textbox ekleme ve bunlara değer yazıp değerleri okuma işlemleridir. Bu tür örneği daha önce gösterdik, konu linki yazı sonundadır.

İlk yapılmaya çalışılacak şeylerden bir başkası tabii ki forma resim eklemek ve bu resimleri kullanabilmek olacaktır. Resmi yeniden boyutlandırmak ve şeklini değiştirmek ilk yapılmaya çalışılacak şeylerdendir.

Bu yazıda forma resim ekleme, resmi yeniden boyutlandırma ve resmi yuvarlak yapmaya ilişkin örnek kodlar verilecektir. Resmi boyutlandırmak için bir fonksiyon yapıldı ve bu fonksiyon gerek duyuldukça kullanıldı. Aynı zamanda resmi yuvarlak yapma işlevi de bir fonksiyonda yapıldı. Böylece gerek duyuldukça bu fonksiyonlar kullanılacak ve defalarca yazılmayacaktır.

Aynı zamanda forma JPanel ekleme üzerinde durduk. Forma JPanel içerisinde Label ekleyerek ileride çok kullanacağımızdan burada JPanel hakkında bir fikir verdik. 

Label ve buttonu panel içerisine konumlandırarak yazı tipi, renk ve yazı büyüklüklerini ayarladık. Kodları anlamakta sıkıntı çekenler altta linki verilen Java ile Windows Form yazısını incelesinler, yardımcı olacaktır. Özellikle formun oluşturulması, label, textbox ve buttonların kullanımı o sayfada kod aralarında yazılmıştır.

Uygulamayı Eclipse ile yaptık. Eclipsenin kullanımı basittir. Ayrıca örneği, otomatik olarak form veya kod bloğu eklemeden sıfırdan yapacağız.

Programı yaparken ilk başlangıçta boş bir Java uygulaması başlatıyoruz. Daha sonra File >> New >>Java Project adımları ile bir Java projesi başlatıyoruz. Ben uygulamaya "PictureBox" adını verdim. Böylece hiçbir class ve formun olmadığı bir uygulama oluşmuş oldu.

Şimdi bu uygulamaya bir class eklemek gerekiyor. Sol tarafta PictureBox (uygulama adı) altında yer alan "src" üzerine sağ tıklayarak açılan pencereden New>>Class seçenekleri ile bir Class oluşturacağız, ben Class’a "AddImage" adını verdim.

Ardından kullanacağımız Java sınıflarını kod sayfamıza dahil ediyoruz.

import java.awt.*;

import java.awt.image.*;

import java.io.*;

import java.awt.event.*;

import javax.imageio.ImageIO;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

Bundan sonra aşağıda göreceğiniz gibi uygulama adı ile aynı olan ana bir sınıf oluşturup gerekli fonksiyonlarımızı yazıyoruz.

Uygulamada resmi yuvarlak yapma işini buttona bağladık. Form açıldığında otomatik oluşmasını da sağlayabilirdik. Ama daha aşina olabilmeniz açısından böyle bir örnek yaptık. 

Kolay gelsin.


import java.awt.*;
import java.awt.image.*;
import java.io.*;
import java.awt.event.*;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class AddImage 
{
 static JFrame Window1;
 static JLabel picture1;
 static JLabel picture2;
 static JLabel picture3;
 static ImageIcon image1;
 static ImageIcon image2;
 static JPanel panel1;
 static JLabel etiket1;
 static BufferedImage Picturebox1;
 static BufferedImage Picturebox1b;
 static BufferedImage Picturebox2;
 static BufferedImage Picturebox2b;
 static JButton button1;

 public static void main(String[] args)
 {
  Window1=new JFrame("Java İle Resim İşlemleri");
  Window1.setSize(1020,768);
  Window1.setExtendedState(JFrame.MAXIMIZED_BOTH);
  Window1.setLocation(5,5);
  
  Window1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  Controllers();
  Window1.setLayout(null);
  Window1.setVisible(true);
 }

 public static void Controllers()
 {
  panel1=new JPanel();
  panel1.setVisible(true);
  panel1.setSize(500,200);
  panel1.setLocation(10,400);
  panel1.setLayout(null);
  panel1.setBackground(Color.red);
  button1=new JButton("YUVARLAK YAP");
  button1.setSize(150,30);
  button1.setLocation(20,10);
  button1.setBackground(Color.green);
  panel1.add(button1);
  button1.addActionListener(new ActionListener()
    {
   public void actionPerformed(ActionEvent e)
   {
    Button1_Click();
   }
    }
  );
  String path1="C:\\Users\\PC\\eclipse-workspace\\PictureBox\\img\\Sunset.jpg";
  String path2="C:\\Users\\PC\\eclipse-workspace\\PictureBox\\img\\Sunset.jpg";
  
  try
  {
   Picturebox1=ImageIO.read(new File(path2));
   Picturebox1b=Yeniboyut(Picturebox1,300,300);
   
  }
  catch(IOException e)
  {
   
  }
  image1=new ImageIcon(Picturebox1b);
  
  
  picture1=new JLabel();
  picture1.setIcon(new javax.swing.ImageIcon(path1));
  picture1.setSize(300,300);
  picture1.setLocation(50,50);
  
  picture2=new JLabel();
  picture2.setIcon(image1);
  picture2.setSize(300,300);
  picture2.setLocation(400,50);
  
  
  picture3=new JLabel();
  picture3.setSize(300,300);
  picture3.setLocation(800,50);
  
  Window1.add(picture1);
  Window1.add(picture2);
  Window1.add(picture3);
  
  etiket1=new JLabel();
  etiket1.setSize(250,65);
  etiket1.setLocation(30,70);
  etiket1.setForeground(Color.yellow);
  etiket1.setFont(new Font("Roman",Font.PLAIN,16));
  etiket1.setText("PICTUREBOX EXAMPLE");
  panel1.add(etiket1);
  Window1.add(panel1);
 }
 private static void Button1_Click()
 {
  String path3="C:\\Users\\PC\\eclipse-workspace\\PictureBox\\img\\Sunset.jpg";
  try
  {
   Picturebox2=ImageIO.read(new File(path3));
   Picturebox2b=Yeniboyut(Picturebox2,300,300);
   Picturebox2b=Circular(Picturebox2b);
   image2=new ImageIcon(Picturebox2b);
   picture3.setIcon(image2);
  }
  catch(IOException e)
  {
   
  }
  
  
 }
 private static BufferedImage Circular(BufferedImage resim)
 {
  int dial=Math.min(resim.getWidth(),resim.getHeight());
  BufferedImage circle_img=new BufferedImage(resim.getWidth(),resim.getHeight(),BufferedImage.TYPE_INT_ARGB);
  
  Graphics2D gc_circle=circle_img.createGraphics();
  RenderFnc(gc_circle);
  gc_circle.fillOval(0,0,dial-1,dial-1);
  gc_circle.dispose();
  
  BufferedImage circle_img2=new BufferedImage(dial,dial,BufferedImage.TYPE_INT_ARGB);
  gc_circle=circle_img2.createGraphics();
  RenderFnc(gc_circle);
  int x1=(dial-resim.getWidth())/2;
  int y1=(dial-resim.getHeight())/2;
  gc_circle.drawImage(resim,x1,y1,null);
  gc_circle.setComposite(AlphaComposite.getInstance(AlphaComposite.DST_IN));
  gc_circle.drawImage(circle_img,0,0,null);
  gc_circle.dispose();
  
  return circle_img2;
 }
 private static void RenderFnc(Graphics2D gc_circle) 
 {
  gc_circle.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
  gc_circle.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
  gc_circle.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
  gc_circle.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE);
  gc_circle.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
  gc_circle.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
  gc_circle.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
  gc_circle.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE);
  gc_circle.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
  gc_circle.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
     gc_circle.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
     gc_circle.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE);
     gc_circle.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
     gc_circle.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
     gc_circle.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
     gc_circle.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE);
  
 }
 public static BufferedImage Yeniboyut(BufferedImage resim, int gen,int yuk)
 {
  BufferedImage yeniresim=new BufferedImage(gen,yuk,resim.getType());
  Graphics2D Regraph=yeniresim.createGraphics();
  Regraph.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
  Regraph.drawImage(resim,0,0,gen,yuk,null);
  Regraph.dispose();
  return yeniresim;
 }
}


Java İle Windows Form Oluşturma


Java İle Resim Hareket Ettirme


SANATSAL BİLGİ

10/02/2019

  • YORUM YAZ
  • ADI SOYADI(veya nick)
  • YORUM


COPYRIGHT© HER HAKKI SAKLIDIR
Sitede Yer Alan Bilgi Belge Ve Materyallerin İzinsiz olarak Kopyalanması ve Alıntılanması Yasaktır

SANATSAL BILGI