📄 screenshot.java
字号:
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3)
// Source File Name: Screenshot.java
package se.southend.drops.tools;
import java.io.OutputStream;
import java.io.PrintStream;
import javax.microedition.io.Connection;
import javax.microedition.io.Connector;
import javax.microedition.io.file.FileConnection;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
public class Screenshot
{
public Screenshot()
{
}
public static void create(int width, int height)
{
screenshot = Image.createImage(width, height);
}
public static void destroy()
{
screenshot = null;
}
public static Graphics getGraphics()
{
if(screenshot != null)
{
return screenshot.getGraphics();
} else
{
System.out.println("Screenshot error: Screenshot not yet created.");
return null;
}
}
public static void saveBMP()
{
saveBMP(screenshot);
}
public static void saveBMP(Image img)
{
if(img == null)
{
System.out.println("Screenshot error: Screenshot target image not created.");
return;
}
dataPtr = 0;
int width = img.getWidth();
int height = img.getHeight();
int rgbData[] = new int[width * height];
img.getRGB(rgbData, 0, width, 0, 0, width, height);
imgData = new byte[54 + 3 * width * height];
writeShort(19778, true);
writeInt(imgData.length, true);
writeInt(0, true);
writeInt(54, true);
writeInt(40, true);
writeInt(width, true);
writeInt(height, true);
writeShort(1, true);
writeShort(24, true);
writeInt(0, true);
writeInt(3 * width * height, true);
writeInt(2834, true);
writeInt(2834, true);
writeInt(0, true);
writeInt(0, true);
for(int y = height - 1; y >= 0; y--)
{
int scanline = y * width;
for(int x = 0; x < width; x++)
{
imgData[dataPtr++] = (byte)(rgbData[scanline + x] & 0xff);
imgData[dataPtr++] = (byte)(rgbData[scanline + x] >> 8 & 0xff);
imgData[dataPtr++] = (byte)(rgbData[scanline + x] >> 16 & 0xff);
}
}
(new Thread() {
public void run()
{
Screenshot.saveFile("file:///c:/pictures/image" + System.currentTimeMillis() + ".bmp", Screenshot.imgData);
}
}).start();
}
public static final void writeInt(int i)
{
writeInt(i, false);
}
public static final void writeInt(int i, boolean byteOrderReversed)
{
if(byteOrderReversed)
{
imgData[dataPtr++] = (byte)(i & 0xff);
imgData[dataPtr++] = (byte)(i >>> 8 & 0xff);
imgData[dataPtr++] = (byte)(i >>> 16 & 0xff);
imgData[dataPtr++] = (byte)(i >>> 24 & 0xff);
} else
{
imgData[dataPtr++] = (byte)(i >>> 24 & 0xff);
imgData[dataPtr++] = (byte)(i >>> 16 & 0xff);
imgData[dataPtr++] = (byte)(i >>> 8 & 0xff);
imgData[dataPtr++] = (byte)(i & 0xff);
}
}
public static final void writeShort(int s)
{
writeShort(s, false);
}
public static final void writeShort(int s, boolean byteOrderReversed)
{
if(byteOrderReversed)
{
imgData[dataPtr++] = (byte)(s & 0xff);
imgData[dataPtr++] = (byte)(s >>> 8 & 0xff);
} else
{
imgData[dataPtr++] = (byte)(s >>> 8 & 0xff);
imgData[dataPtr++] = (byte)(s & 0xff);
}
}
public static final void writeByte(int b)
{
imgData[dataPtr++] = (byte)(b & 0xff);
}
public static final void writeBytes(int b[])
{
for(int i = 0; i < b.length; i++)
imgData[dataPtr + i] = (byte)b[i];
dataPtr += b.length;
}
private static synchronized void saveFile(String fileURL, byte data[])
{
try
{
FileConnection file = (FileConnection)Connector.open(fileURL);
if(file.exists())
file.delete();
file.create();
OutputStream out = file.openOutputStream();
out.write(data, 0, data.length);
out.close();
file.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
private static final String SAVE_PATH = "file:///c:/pictures/";
private static byte imgData[];
private static int dataPtr;
private static Image screenshot;
private static int index;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -