OLEH :
AKHMAD AFFANDI
201110370311407
LABORATORIUM DAM
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS TEKNIK
UNIVERSITAS MUHAMMADIYAH MALANG
2012 / 2013
Modul 6
imsList.add(bi);
imagesMap.put(name, imsList);
System.out.println(" disimpan " + name + "/" + fnm);
return true;
} else {
return false;
}
}
// --------- load numbered images ------------------------------public int loadNumImages(String fnm, int number) {
String prefix = getPrefix(fnm);
String postfix = getPosfix(fnm);
String imFnm;
BufferedImage bi;
ArrayList imsList = new ArrayList();
int loadCount = 0;
if (imagesMap.containsKey(prefix)) {
System.out.println("Error: " + prefix + "sudah digunakan");
return 0;
}
if (number <= 0) {
System.out.println("Error: Number <= 0: " + number);
imFnm = prefix + postfix;
if ((bi = loadImage(imFnm)) != null) {
loadCount++;
imsList.add(bi);
System.out.println(" disimpan " + prefix + "/" + imFnm);
}
} else { // load prefix + <i> + postfix, where i = 0 to <number-1>
System.out.print(" Menambahkan " + prefix + "/"
+ prefix + "*" + postfix + "... ");
for (int i = 0; i < number; i++) {
imFnm = prefix + i + postfix;
if ((bi = loadImage(imFnm)) != null) {
loadCount++;
imsList.add(bi);
System.out.print(i + " ");
}
}
System.out.println();
}
if (loadCount == 0) {
System.out.println("Tidak ada image dengan prefix " + prefix);
} else {
imagesMap.put(prefix, imsList);
}
return loadCount;
}
//--------- Separating prefx and postfix ------------------------------private String getPrefix(String fnm) // extract name before '.' of filename
{
int posn;
if ((posn = fnm.lastIndexOf(".")) == -1) {
System.out.println("Prefix tidak ditemukan untuk nama file: " + fnm);
return fnm;
} else {
return fnm.substring(0, posn);
}
} // end of getPrefix()
private String getPosfix(String fnm) // extract name after '.' of filename
{
int posn;
if ((posn = fnm.lastIndexOf(".")) == -1) {
System.out.println("Posfix tidak ditemukan untuk nama file: " + fnm);
return fnm;
} else {
return fnm.substring(posn);
}
}
// --------- load image strip ------------------------------public int loadStripImages(String fnm, int column, int row) {
String name = getPrefix(fnm);
if (imagesMap.containsKey(name)) {
System.out.println("Error: " + name + " sudah digunakan");
return 0;
}
// load the images into an array
BufferedImage[] strip = loadStripImageArray(fnm, column, row);
if (strip == null) {
return 0;
}
ArrayList imsList = new ArrayList();
int loadCount = 0;
System.out.print(" menambahkan " + name + "/" + fnm + "... ");
for (int i = 0; i < strip.length; i++) {
loadCount++;
imsList.add(strip[i]);
System.out.print(i + " ");
}
System.out.println();
if (loadCount == 0) {
System.out.println("Tidak ada image dengan prefix " + name);
} else {
imagesMap.put(name, imsList);
}
return loadCount;
} // end of loadStripImages()
private BufferedImage[] loadStripImageArray(String fnm, int column, int row) {
if (column <= 0) {
System.out.println("column <= 0; returning null");
return null;
}
BufferedImage stripIm;
if ((stripIm = loadImage(fnm)) == null) {
System.out.println("Return null");
return null;
}
int imWidth = (int) stripIm.getWidth() / column;
int imHeight = (int) stripIm.getHeight() / row;
int transparency = stripIm.getColorModel().getTransparency();
BufferedImage[] strip = new BufferedImage[column * row];
Graphics2D stripGC;
for (int i = 0; i < row; i++) {
for (int j = i * column; j < (i + 1) * column; j++) {
int fx = (j % column) * imWidth;
int fy = i * imHeight;
strip[j] = gc.createCompatibleImage(imWidth, imHeight,
transparency);
stripGC = strip[j].createGraphics();
stripGC.setComposite(AlphaComposite.Src);
stripGC.drawImage(stripIm, 0, 0, imWidth, imHeight,
fx, fy, fx + imWidth, fy + imHeight, null);
stripGC.dispose();
}
}
return strip;
} // end of loadStripImageArray()
// ------------------ access methods ------------------public BufferedImage getImage(String name) {
ArrayList imsList = (ArrayList) imagesMap.get(name);
if (imsList == null) {
System.out.println("Tidak ada image dengan nama " + name);
return null;
}
return (BufferedImage) imsList.get(0);
} // end of getImage() with name input;
public BufferedImage getImage(String name, int posn) {
ArrayList imsList = (ArrayList) imagesMap.get(name);
if (imsList == null) {
System.out.println("Tidak ada image dengan nama " + name);
return null;
}
int size = imsList.size();
if (posn < 0) {
return (BufferedImage) imsList.get(0); // return first image
} else if (posn >= size) {
int newPosn = posn % size; // modulo
return (BufferedImage) imsList.get(newPosn);
}
return (BufferedImage) imsList.get(posn);
} // end of getImage() with posn input;
public ArrayList getImages(String name) {
ArrayList imsList = (ArrayList) imagesMap.get(name);
if (imsList == null) {
System.out.println("Tidak ada image dengan nama " + name);
return null;
}
return imsList;
}
public boolean isLoaded(String name) {
ArrayList imsList = (ArrayList) imagesMap.get(name);
if (imsList == null) {
return false;
}
return true;
}
public int numImages(String name) {
ArrayList imsList = (ArrayList) imagesMap.get(name);
if (imsList == null) {
System.out.println("Tidak ada image dengan nama " + name);
return 0;
}
return imsList.size();
}
//
public void setPath(String path) {
this.path = path;
}
// ------------------- Image Input -----------------private BufferedImage loadImage(String fnm) {
try {
BufferedImage im;
if (path.equals(IMAGE_DIR)) {
im = ImageIO.read(getClass().getResource(path + fnm));
} else {
im = ImageIO.read(new File(path + "/" + fnm));
}
int transparency = im.getColorModel().getTransparency();
BufferedImage copy = gc.createCompatibleImage(
im.getWidth(), im.getHeight(),
transparency);
// membuat graphics context
Graphics2D g2d = copy.createGraphics();
// g2d.setComposite(AlphaComposite.Src);
g2d.drawImage(im, 0, 0, null);
g2d.dispose();
return copy;
} catch (IOException e) {
System.out.println("Gagal memuat "
+ path + "/" + fnm + ":\n" + e);
return null;
}
}
}
Object :
g2d.drawImage(im, 0, 0, null); (digunakan untuk memanggil gambar yang akan di
tampilkan)
g2d.dispose();(dispose yang image)
Methode :
public BufferedImage getImage(String name)
public BufferedImage getImage(String name, int posn)
Percobaan 3 : Membuat class ImageAnimator
import java.awt.image.*;
public class ImageAnimator
{
private String imName;
private boolean isRepeating, ticksIgnored;
seqDuration);
// menghitung image terkini
imPosition = (int) (animTotalTime / showPeriod); // dalam jarak 0sampai jumlah
gambar-1
if ((imPosition == numImages-1) && (!isRepeating)) { // sequence
ticksIgnored = true; // update tick diabaikan
if (listener != null)
listener.sequenceEnded(imName); // mengirimkan pesan ke listener
}
}
}
public BufferedImage getCurrentImage()
{ if (numImages != 0)
return imsMgr.getImage(imName, imPosition);
else
return null;
}
public int getCurrentPosition()
{ return imPosition; }
public void addImageSequenceListener(ImageSequenceListener l)
{ listener = l; }
public void stop()
/* update tick diabaikan */
{ ticksIgnored = true; }
public boolean isStopped()
{ return ticksIgnored; }
public boolean atSequenceEnd()
// check apakah sequence selesai
{ return ((imPosition == numImages-1) && (!isRepeating)); }
public void stopAt(int pos){
imPosition=pos;
ticksIgnored = true;
}
public void restartAt(int imPosn)
/* memulai menampilkan gambar sesuai dengan posisi yang diberikan */
{
if (numImages != 0) {
if ((imPosn < 0) || (imPosn > numImages-1)) {
imPosition = imPosn;
animTotalTime = (long) imPosition * showPeriod;
ticksIgnored = false;
}
}
public void resume()
{
if (numImages != 0)
ticksIgnored = false;
}
Methode :
public void restartAt(int imPosn)(memulai menampilkan gambar sesuai dengan
posisi yang diberikan)
public void resume()(mengulang gambar)
Object :
public ImageAnimator(String nm, int ap, double d,boolean isr, ImageManager
il)(digunakan sebagai objek untuk pemanggilan dari class image animator)
public BufferedImage getCurrentImage()
Percobaan 4 : Membuat class ImageTest1
import javax.swing.*;
import javax.imageio.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
public class ImageTest1 extends JFrame{
Image
Background,JeniOpaque,JeniTransparant,JeniTranscluent,JeniAATranscluent;
BufferedImage im;
public ImageTest1(){
super("ImageTest");
this.setSize(420,500);
try{
im =
ImageIO.read(getClass().getResource("images/Background.png"));
Background =
ImageIO.read(getClass().getResource("images/Background.png"));
JeniOpaque=
ImageIO.read(getClass().getResource("images/JeniOpaque.png"));
JeniTransparant=
ImageIO.read(getClass().getResource("images/JeniTransparant.png"));
JeniTranscluent=
ImageIO.read(getClass().getResource("images/JeniTranscluent.png"));
JeniAATranscluent=
ImageIO.read(getClass().getResource("images/JeniAATranscluent.png"));
}catch(IOException e){
System.out.println(e.toString());
}
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public void paint(Graphics g){
Graphics2D g2d;
g2d= (Graphics2D) g;
g.drawImage(im,0,0,500,500,this);
// g.drawImage(Background,0,0,500,500,this);
g.drawImage(JeniOpaque,10,50,200,200,this);
g.drawImage(JeniTransparant,210,50,200,200,this);
g.drawImage(JeniTranscluent,10,250,200,200,this);
g.drawImage(JeniAATranscluent,210,250,200,200,this);
}
public static void main(String [] ags){
new ImageTest1();
}
}
Object :
g.drawImage(JeniOpaque,10,50,200,200,this);( membentuk gambar JeniOpaque)
g.drawImage(JeniTransparant,210,50,200,200,this);( membentuk gambar
Transaparant)
Methode :
public void paint(Graphics g) (methode yang digunakan untuk mewarani objek yang
akan di tampilkan)
public static void main(String [] ags){
new ImageTest1();
}(methode yang di gunakan untuk menampilkan atau memanggil imageTest1)
Output Percobaan 4 : Membuat class ImageTest1
imsLoader.setPath("jeni6/images");
try {
imsLoader.loadNumImages("25_04_.gif", 15);
imsLoader.loadNumImages("numbers.gif", 6);
imsLoader.loadStripImages("boom.png", 5, 1);
imsLoader.loadStripImages("ball.png", 8, 4);
imsLoader.loadStripImages("cats.gif", 6, 1);
} catch (Exception e) {
System.out.println(e.toString());
}
initImages();
t = new Thread(this);
g2d.setColor(Color.blue);
g2d.fillRect(0, 0, PWIDTH, PHEIGHT);
drawImage(g2d, mihPlayer.getCurrentImage(), 10, 10);
drawImage(g2d, numbersPlayer.getCurrentImage(), 200, 10);
// --------------- strip images ---------------------drawImage(g2d, catsPlayer.getCurrentImage(), 10, 235);
drawImage(g2d, kaboomPlayer.getCurrentImage(), 400, 10);
drawImage(g2d, jeballPlayer.getCurrentImage(), 350, 270);
}
Methode :
public void sequenceEnded(String imageName)
public void paintComponent(Graphics g)
Object :
g2d.setColor(Color.blue);(mengatur warna)
g2d.fillRect(0, 0, PWIDTH, PHEIGHT);(fill pada Pwidht dan Pheihgt)
Modul 7
ImageEfek :
package Rotasi_Transformasi;
import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
public class ImageEfek {
AffineTransform at;
private GraphicsConfiguration gc;
public ImageEfek(){
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
gc = ge.getDefaultScreenDevice().getDefaultConfiguration();
}
public BufferedImage getRotatedImage(BufferedImage src, int angle){
int transparency = src.getColorModel().getTransparency();
int center= Math.max(src.getWidth(),src.getHeight())/2;
BufferedImage dest = gc.createCompatibleImage(
Math.max(src.getWidth(),src.getHeight()),Math.max(src.getWidth(),src.getHeight()), transparency );
Graphics2D g2d = dest.createGraphics();
AffineTransform origAT = g2d.getTransform();
AffineTransform rot = new AffineTransform();
rot.rotate( Math.toRadians(angle), center, center);
g2d.transform(rot);
g2d.drawImage(src, 0, 0, null);
g2d.setTransform(origAT);
g2d.dispose();
return dest;
}
Modul 7
:
ContohRotasi
package Rotasi_Transformasi;
import java.awt.*;
import java.awt.geom.*;
import java.util.*;
import javax.swing.*;
public class ContohRotasi extends JFrame implements Runnable {
Shape shape;
Thread t;
Random rand = new Random();
ContohRotasi (){
shape = new Rectangle2D.Double(10,40,100,50);
t=new Thread(this);
t.start();
setTitle("Percobaan Rotasi");
setSize(500,500);
setVisible(true);
setDefaultCloseOperation(this.EXIT_ON_CLOSE);
}
public void paint (Graphics g){
Graphics2D g2d = (Graphics2D) g;
AffineTransform identitas = new AffineTransform();
g2d.setColor(Color.BLACK);
g2d.fillRect(0, 0,500,500);
g2d.setTransform(identitas);
Out put
Penjelasan :
Modul 7
:
Rotasi_Transformasi
package Rotasi_Transformasi;
import GrafikBitmap.ImageManager;
import java.awt.*;
import java.awt.image.*;
import javax.swing.*;
public class TestTransformasi extends JPanel implements Runnable{
private Thread th;
private boolean running;
private BufferedImage bufImg;
private Graphics2D g2d;
private BufferedImage oriImg;
private BufferedImage transformImg;
private ImageManager imsMgr;
private ImageEfek imgEfek;
private double scalex=0, scaley=0;
private int rotAngle;
TestTransformasi(){
setPreferredSize (new Dimension(600, 400));
imgEfek = new ImageEfek();
imsMgr = new ImageManager();
imsMgr.setPath("jeniTransform/images");
imsMgr.loadSingleImage("maninhat.gif");
oriImg = imsMgr.getImage("maninhat");
}
public void start(){
th = new Thread(this);
th.start();
running = true;
}
public void stop(){
running=false;
}
public void run(){
while(running){
try{
Thread.sleep(20);
}catch(Exception e){}
update();
render();
repaint();
Output
Penjelasan:
Program yang menampilkanm, perotarsian image orang , mutar2, dan juga menginput atau
manggil class ImageEfek.
KESIMPULAN
Di modul 6 dan 7 membuktikan bahwa adanya gambar dan rotasi pergerakan, fungsi
transparansi ada pada program java dan modul 7 juga membuktikan adanya outputan gambar
pada java , sehingga kedua outputan tersebut bias d aplikasikan pada game , sehingga ada
gambar yang bergerak dan berotasi.
curhat di kelas Cuma bahas grennfoot tp di gak, beda jauh :D.