/* * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.monkeyrunner.adb.image; import com.android.ddmlib.RawImage; import com.android.monkeyrunner.MonkeyDevice; import com.android.monkeyrunner.adb.AdbBackend; import com.android.monkeyrunner.adb.AdbMonkeyImage; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; import java.io.Serializable; /** * Utility program to capture raw and converted images from a device and write them to a file. * This is used to generate the test data for ImageUtilsTest. */ public class CaptureRawAndConvertedImage { public static class MonkeyRunnerRawImage implements Serializable { public int version; public int bpp; public int size; public int width; public int height; public int red_offset; public int red_length; public int blue_offset; public int blue_length; public int green_offset; public int green_length; public int alpha_offset; public int alpha_length; public byte[] data; public MonkeyRunnerRawImage(RawImage rawImage) { version = rawImage.version; bpp = rawImage.bpp; size = rawImage.size; width = rawImage.width; height = rawImage.height; red_offset = rawImage.red_offset; red_length = rawImage.red_length; blue_offset = rawImage.blue_offset; blue_length = rawImage.blue_length; green_offset = rawImage.green_offset; green_length = rawImage.green_length; alpha_offset = rawImage.alpha_offset; alpha_length = rawImage.alpha_length; data = rawImage.data; } public RawImage toRawImage() { RawImage rawImage = new RawImage(); rawImage.version = version; rawImage.bpp = bpp; rawImage.size = size; rawImage.width = width; rawImage.height = height; rawImage.red_offset = red_offset; rawImage.red_length = red_length; rawImage.blue_offset = blue_offset; rawImage.blue_length = blue_length; rawImage.green_offset = green_offset; rawImage.green_length = green_length; rawImage.alpha_offset = alpha_offset; rawImage.alpha_length = alpha_length; rawImage.data = data; return rawImage; } } private static void writeOutImage(RawImage screenshot, String name) throws IOException { ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(name)); out.writeObject(new MonkeyRunnerRawImage(screenshot)); out.close(); } public static void main(String[] args) throws IOException { AdbBackend backend = new AdbBackend(); MonkeyDevice device = backend.waitForConnection(); AdbMonkeyImage snapshot = (AdbMonkeyImage) device.takeSnapshot(); // write out to a file snapshot.writeToFile("output.png", "png"); writeOutImage(snapshot.getRawImage(), "output.raw"); System.exit(0); } }