我需要能够识别用户屏幕上的单个窗口并对其进行屏幕捕获.屏幕数据将存储在内存中,而不是写入磁盘.
这已经通过命令行工具/ usr/sbin/screencapture或通过Grab实用程序得到支持(尽管它们的功能不够广泛,无法证明我将它们作为子进程启动).
参考/提示
如何保存从代码中截取的屏幕截图,并将其放入应用程序中的电子邮件中?
我需要能够进行屏幕转储测试,而ICS现在有一个屏幕截图功能,可以通过按下(并按住)音量调低和电源按钮来调用.有没有办法通过adb脚本化这个功能?(据我所知,它没有公共Java API).我试图使用java中的KeyEvent模拟电源和音量按钮,我试图使用adb keyevent和adb sendevent但没有成功.我怀疑电源按钮还会产生一些不是用上述方法生成的低级别调用.
那么有人知道是否可以从adb调用该函数?如果这是不可能的,有人知道源代码中的哪个屏幕截图功能存在?也许我可以通过阅读来解决问题.
更新
用于捕获屏幕的源代码位于名为screenCapture的函数中的"frameworks/base/services/surfaceflinger/services/surfaceflinger/SurfaceFlinger.cpp"中.我不知道是否有可能从jni调用它,但我会尝试,因为如果我可以通过java屏幕截图将会很棒.
否则,@ edthethird通过android.amberfog.com/?p=168获得了一个解决方案,可以使用命令行截取屏幕截图.
谢谢大家的帮助!
我正在拍摄RelativeLayout的截图,但它会导致错误.
错误:
05-10 17:43:44.249: ERROR/AndroidRuntime(7721): Caused by: java.lang.NullPointerException
05-10 17:43:44.249: ERROR/AndroidRuntime(7721): at android.graphics.Bitmap.createBitmap(Bitmap.java:358)
05-10 17:43:44.249: ERROR/AndroidRuntime(7721): at com.API.Connect.share(FacebookConnect.java:110)
Run Code Online (Sandbox Code Playgroud)
码:
public class Connect extends Activity implements LoginListener {
public static String news = " ";
RelativeLayout bitmapimage;
Bitmap bitmap;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.image);
bitmapimage = (RelativeLayout) findViewById(R.id.bitmapimg);
TextView txtlove = (TextView) findViewById(R.id.txtlove);
txtlove.setText(news.toString());
share();
}
public void share() {
View v1 = bitmapimage;
v1.setDrawingCacheEnabled(true);
bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);
saveImage();
// TODO Auto-generated method stub
}
void saveImage() …Run Code Online (Sandbox Code Playgroud) 我正在尝试捕获屏幕截图并将其保存为jpeg MediaLibrary但已收到
在lib.SavePicture(filePath,ms)中的Microsoft.Xna.Framework.ni.dll中发生System.UnauthorizedAccessException类型的第一次机会异常;
我的代码:
public static void SaveToMediaLibrary(FrameworkElement element, string title)
{
using (MemoryStream ms = new MemoryStream())
{
bmp.SaveJpeg(ms, (int)element.ActualWidth, (int)element.ActualHeight, 0, 100);
var lib = new MediaLibrary();
var filePath = string.Format(title + ".jpg");
ms.Seek(0, SeekOrigin.Begin);
lib.SavePicture(filePath, ms);
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Windows Phone 8模拟器进行测试.我错过了什么?
我是Chrome扩展程序/自动下载的新手.我有一个背景页面,其中包含可见网页的屏幕截图chrome.tabs.captureVisibleTab().在我的弹出窗口中,我有:
chrome.tabs.captureVisibleTab(null, {}, function (image) {
// Here I want to automatically download the image
});
Run Code Online (Sandbox Code Playgroud)
我已经做了类似的事情blob,但我完全不知道如何下载图像以及如何自动完成.
在实践中,我希望我的Chrome扩展程序能够在加载特定页面时自动截图+下载图像(我猜这必须通过让我的内容脚本与我的后台页面对话来实现,对吗?)
我正在为相机胶卷,电子邮件,短信,FB,Twitter等打印部分屏幕截图...部分屏幕选择 - 顶部100像素,底部100像素.
我使用以下代码:
let top: CGFloat = 100
let bottom: CGFloat = 100
let size = CGSize(width: view.frame.size.width, height: view.frame.size.height - top - bottom)
UIGraphicsBeginImageContext(size)
let context = UIGraphicsGetCurrentContext()!
CGContextTranslateCTM(context, 0, -top)
view.layer.renderInContext(context)
let snapshot = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
UIImageWriteToSavedPhotosAlbum(snapshot, nil, nil, nil)
Run Code Online (Sandbox Code Playgroud)
结果截图质量很差.
我研究了几个小时,发现有几个人有类似的问题.我不能完全理解为我的问题修改解决方案.
我确实设法找到了一个半修复程序.我变了:
UIGraphicsBeginImageContext(size)
Run Code Online (Sandbox Code Playgroud)
至
UIGraphicsBeginImageContextWithOptions(imageView.bounds.size,true,2.0)
Run Code Online (Sandbox Code Playgroud)
这实际上是我的截图缩放了2.0倍
这似乎给我一个更清晰/更好质量的部分截图,虽然图像比我想象的大.
我可以申请哪种解决方案可能更合适吗?
谢谢!
我目前正在研究一个小的as3应用程序,用于获取屏幕选定部分的屏幕截图.所以我想知道是否可以从actionscript代码运行终端代码.
例如这行终端代码:
screencapture -x -R20,20,640,380 ~/Desktop/test.png
Run Code Online (Sandbox Code Playgroud) 我创建了python程序,该程序可以制作100张屏幕截图,并将其保存img在OS文件夹内的文件夹中Documents。在我的Linux Ubuntu上,它工作得非常好,截取了100张屏幕截图并将其保存在我想要的目录中。现在,我在同一虚拟机中创建了一个新的Linux用户,并且运行了相同的python脚本。它给了我这个错误:ImportError: No module named pyscreenshot
我尝试了很多次。它可以在我的其他用户中使用,尽管在新用户中它总是给我错误。有什么理由吗?谢谢。代码如下:
import os
import pyscreenshot as ImageGrab
def photos(num):
for n in range(num):
s = str(n)
a = "../Documents/img/s" + s + ".png"
# grab fullscreen
im = ImageGrab.grab()
# save image file
im.save(a)
return True
Run Code Online (Sandbox Code Playgroud)
快速说明:我正在photos()使用另一个文件调用该函数import screenshot(该文件称为“ screenshot.py”)
screenshot ×10
actionscript ×2
android ×2
macos ×2
adb ×1
android-4.0-ice-cream-sandwich ×1
apache-flex ×1
c# ×1
cocoa ×1
cocoa-touch ×1
email ×1
flash ×1
image ×1
ios ×1
iphone ×1
javascript ×1
macos-carbon ×1
media ×1
objective-c ×1
python ×1
python-3.x ×1
scale ×1
swift ×1
ubuntu-17.04 ×1