Image dönderme

JDK, Visual J++, Servlet ile ilgili herşey
Forum kuralları
Resim Forum Kurallarını Okumadan Mesaj Atmayın
Forum Kurallarını okumak için tıklayınız.
Resim Soracağınız soru zaten varsa? Arama yapmadan mesaj atmayın.
Forumlarda arama yapmak için tıklayınız. Dokümanlarda veya bağlantılarda arama yapmak için tıklayınız.

Image dönderme

Mesajgönderen iceman havuc » Cmt Ara 26, 2009 11:06 am

Arkadaşlar imageleri java ile döndürmek istiyorum.


import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Insets;
import java.awt.MediaTracker;
import java.awt.Toolkit;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.awt.image.BufferedImageOp;

import javax.swing.JFrame;


public class Rotateimage extends JFrame {
private Image inputImage;

private BufferedImage sourceBI;

private BufferedImage destinationBI = null;

private Insets frameInsets;

private boolean sizeSet = false;

public Rotateimage(String imageFile) {
addNotify();
frameInsets = getInsets();
inputImage = Toolkit.getDefaultToolkit().getImage(imageFile);

MediaTracker mt = new MediaTracker(this);
mt.addImage(inputImage, 0);
try {
mt.waitForID(0);
} catch (InterruptedException ie) {
}

sourceBI = new BufferedImage(inputImage.getWidth(null), inputImage
.getHeight(null), BufferedImage.TYPE_INT_ARGB);

Graphics2D g = (Graphics2D) sourceBI.getGraphics();
g.drawImage(inputImage, 0, 0, null);

AffineTransform at = new AffineTransform();

at.scale(2.0, 2.0);

at.rotate(45.0 * Math.PI / 180.0, sourceBI.getWidth() / 2.0, sourceBI
.getHeight() / 2.0);


AffineTransform translationTransform;
translationTransform = findTranslation(at, sourceBI);
at.preConcatenate(translationTransform);
r
BufferedImageOp bio;
bio = new AffineTransformOp(at, AffineTransformOp.TYPE_BILINEAR);

destinationBI = bio.filter(sourceBI, null);

int frameInsetsHorizontal = frameInsets.right + frameInsets.left;
int frameInsetsVertical = frameInsets.top + frameInsets.bottom;
setSize(destinationBI.getWidth() + frameInsetsHorizontal, destinationBI
.getHeight()
+ frameInsetsVertical);
show();
}


private AffineTransform findTranslation(AffineTransform at, BufferedImage bi) {
Point2D p2din, p2dout;

p2din = new Point2D.Double(0.0, 0.0);
p2dout = at.transform(p2din, null);
double ytrans = p2dout.getY();

p2din = new Point2D.Double(0, bi.getHeight());
p2dout = at.transform(p2din, null);
double xtrans = p2dout.getX();

AffineTransform tat = new AffineTransform();
tat.translate(-xtrans, -ytrans);
return tat;
}

public void paint(Graphics g) {
if (destinationBI != null)
g.drawImage(destinationBI, frameInsets.left, frameInsets.top, this);
}

public static void main(String[] args) {
new Rotateimage("new-2.png");
}

}


yukardaki kodu internetten buldum ve calısıyor jframe içinde resimleri dödürüyor.Ama ben bu işi applet içinde yapmak istiyorum Jframe yerinde yukardaki kodun bir türlü class haline getirip appletten çağıramadim.

Yada bu işin başka bir yolu varmıdır?
iceman havuc
 
Mesajlar: 90
Kayıt: Pzr Tem 06, 2003 11:00 pm

Image dönderme

Sponsor

Sponsor
 

Re: Image dönderme

Mesajgönderen iceman havuc » Pzr Oca 10, 2010 11:04 am

Aşşagıdaki kod kod çalışıyor.



import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.HeadlessException;
import java.awt.Image;
import java.awt.Transparency;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.PixelGrabber;
import javax.swing.ImageIcon;

public class Rotate {

public static Image rotateImage(Image img,double degree){
BufferedImage bufImg = toBufferedImage(img);
double angle = Math.toRadians(degree);

return tilt(bufImg,angle);
}

public static BufferedImage tilt(BufferedImage image, double angle) {
double sin = Math.abs(Math.sin(angle)), cos = Math.abs(Math.cos(angle));
int w = image.getWidth(), h = image.getHeight();
int neww = (int)Math.floor(w*cos+h*sin), newh = (int)Math.floor(h*cos+w*sin);
GraphicsConfiguration gc = getDefaultConfiguration();
BufferedImage result = gc.createCompatibleImage(neww, newh, Transparency.TRANSLUCENT);
Graphics2D g = result.createGraphics();
g.translate((neww-w)/2, (newh-h)/2);
g.rotate(angle, w/2, h/2);
g.drawRenderedImage(image, null);
g.dispose();
return result;
}

public static GraphicsConfiguration getDefaultConfiguration() {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gd = ge.getDefaultScreenDevice();
return gd.getDefaultConfiguration();
}

// http://www.exampledepot.com/egs/java.aw ... e2Buf.html
// An Image object cannot be converted to a BufferedImage object.
// The closest equivalent is to create a buffered image and then draw the image on the buffered image.
// This example defines a method that does this.

// This method returns a buffered image with the contents of an image
public static BufferedImage toBufferedImage(Image image) {
if (image instanceof BufferedImage) {
return (BufferedImage)image;
}

// This code ensures that all the pixels in the image are loaded
image = new ImageIcon(image).getImage();

// Determine if the image has transparent pixels; for this method's
// implementation, see e661 Determining If an Image Has Transparent Pixels
boolean hasAlpha = hasAlpha(image);

// Create a buffered image with a format that's compatible with the screen
BufferedImage bimage = null;
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
try {
// Determine the type of transparency of the new buffered image
int transparency = Transparency.OPAQUE;
if (hasAlpha) {
transparency = Transparency.BITMASK;
}

// Create the buffered image
GraphicsDevice gs = ge.getDefaultScreenDevice();
GraphicsConfiguration gc = gs.getDefaultConfiguration();
bimage = gc.createCompatibleImage(
image.getWidth(null), image.getHeight(null), transparency);
} catch (HeadlessException e) {
// The system does not have a screen
}

if (bimage == null) {
// Create a buffered image using the default color model
int type = BufferedImage.TYPE_INT_RGB;
if (hasAlpha) {
type = BufferedImage.TYPE_INT_ARGB;
}
bimage = new BufferedImage(image.getWidth(null), image.getHeight(null), type);
}

// Copy image to buffered image
Graphics g = bimage.createGraphics();

// Paint the image onto the buffered image
g.drawImage(image, 0, 0, null);
g.dispose();

return bimage;
}

// http://www.exampledepot.com/egs/java.aw ... Alpha.html
// This method returns true if the specified image has transparent pixels
public static boolean hasAlpha(Image image) {
// If buffered image, the color model is readily available
if (image instanceof BufferedImage) {
BufferedImage bimage = (BufferedImage)image;
return bimage.getColorModel().hasAlpha();
}

// Use a pixel grabber to retrieve the image's color model;
// grabbing a single pixel is usually sufficient
PixelGrabber pg = new PixelGrabber(image, 0, 0, 1, 1, false);
try {
pg.grabPixels();
} catch (InterruptedException e) {
}

// Get the image's color model
ColorModel cm = pg.getColorModel();
return cm.hasAlpha();
}
}
iceman havuc
 
Mesajlar: 90
Kayıt: Pzr Tem 06, 2003 11:00 pm


Dön Java

Ana Sayfa | Üyelik İşlemleri | Döküman Ekleyin | Bağlantılar | Forumlar | Arama
Arkadaşıma Öner | Ziyaretçi Defteri | Bize Ulaşın  | Site Haritası | Reklam

© Programlama.com 1998 - 2006. Her Hakkı Saklıdır. Lütfen Anlaşma Metnini Görmek için Burayı Tıklayın
Developed and Designed by Programlama.com
Programlama.com is a vertical internet portal for Turkish software developers to exchange their knowledge about software development,design,programing and information systems.
Click here for more information in English.