나는 안드로이드 화면 (나는 안드로이드 화면에서 무엇을하는지)을 프로그램 적으로 만들고 싶습니다.안드로이드 화면 캡처 또는 비디오에서 이미지 만들기
최상의 튜토리얼 또는 도움말이 있습니까? 많이 검색했지만 그 사실을 발견했습니다 ... (안드로이드 스크린 사진을 프로그래밍 방식으로 캡처). 안드로이드에서 많은 캡쳐 된 이미지로 프로그래밍 방식으로 비디오를 만드는 방법보다 매 밀리 초 후에 많은 이미지를 캡처하는 것이 좋습니다.
나는 안드로이드 화면 (나는 안드로이드 화면에서 무엇을하는지)을 프로그램 적으로 만들고 싶습니다.안드로이드 화면 캡처 또는 비디오에서 이미지 만들기
최상의 튜토리얼 또는 도움말이 있습니까? 많이 검색했지만 그 사실을 발견했습니다 ... (안드로이드 스크린 사진을 프로그래밍 방식으로 캡처). 안드로이드에서 많은 캡쳐 된 이미지로 프로그래밍 방식으로 비디오를 만드는 방법보다 매 밀리 초 후에 많은 이미지를 캡처하는 것이 좋습니다.
다음 코드를 Android에서 화면 캡처에 사용할 수 있습니다.
이 URL을 참조하시기 바랍니다
..... http://android-coding.blogspot.in/2011/05/create-custom-dialog-with-dynamic.htmlAndroid에서 화면 캡처에 다음 코드를 사용할 수 있습니다.
ImageView v1 = (ImageView)findViewById(R.id.mImage);
v1.setDrawingCacheEnabled(true);
Bitmap bm = v1.getDrawingCache();
이미지 생성 동영상의 경우 this 링크를 방문하십시오.
만큼 당신이 JCodec (http://jcodec.org)를 사용하여 비디오에 당신이 그것을 뒤집어 수있는 비트 맵을 가지고있다.
샘플 이미지 시퀀스 인코더는 https://github.com/jcodec/jcodec/blob/master/src/main/java/org/jcodec/api/SequenceEncoder.java입니다. BufferedImage를 Bitmap으로 바꾸면 용도에 맞게 수정할 수 있습니다.
사용이 헬퍼 방법 :
당신은뿐만 아니라, 그들은이에 따라 노력하고 있습니다 전체 안드로이드 지원을 구현하는 JCodec 팀 기다릴 수public static Picture fromBitmap(Bitmap src) {
Picture dst = Picture.create((int)src.getWidth(), (int)src.getHeight(), RGB);
fromBitmap(src, dst);
return dst;
}
public static void fromBitmap(Bitmap src, Picture dst) {
int[] dstData = dst.getPlaneData(0);
int[] packed = new int[src.getWidth() * src.getHeight()];
src.getPixels(packed, 0, src.getWidth(), 0, 0, src.getWidth(), src.getHeight());
for (int i = 0, srcOff = 0, dstOff = 0; i < src.getHeight(); i++) {
for (int j = 0; j < src.getWidth(); j++, srcOff++, dstOff += 3) {
int rgb = packed[srcOff];
dstData[dstOff] = (rgb >> 16) & 0xff;
dstData[dstOff + 1] = (rgb >> 8) & 0xff;
dstData[dstOff + 2] = rgb & 0xff;
}
}
}
public static Bitmap toBitmap(Picture src) {
Bitmap dst = Bitmap.create(pic.getWidth(), pic.getHeight(), ARGB_8888);
toBitmap(src, dst);
return dst;
}
public static void toBitmap(Picture src, Bitmap dst) {
int[] srcData = src.getPlaneData(0);
int[] packed = new int[src.getWidth() * src.getHeight()];
for (int i = 0, dstOff = 0, srcOff = 0; i < src.getHeight(); i++) {
for (int j = 0; j < src.getWidth(); j++, dstOff++, srcOff += 3) {
packed[dstOff] = (srcData[srcOff] << 16) | (srcData[srcOff + 1] << 8) | srcData[srcOff + 2];
}
}
dst.setPixels(packed, 0, src.getWidth(), 0, 0, src.getWidth(), src.getHeight());
}
이 코드는 매우 느리게 실행 되나요? fromBitmap()은 480x800 이미지를 실행하는 데 약 30-40 초가 걸렸습니다. JCodec의 encodeNativeFrame()이 더 오래 걸립니다. 그림 대신 비트 맵을 사용하기 위해 JCodec의 내부를 다시 배선하는 방법이 있습니까? – BVB
오신 것을 환영합니다 스택 오버플로! 이것이 이론적으로 질문에 대답 할 수 있지만 여기에 답의 핵심 부분을 포함하고 참조 용 링크를 제공하는 것이 바람직합니다 (http://meta.stackexchange.com/q/8259). –