首先,我正在编写一个根应用程序,因此root权限不成问题.我搜索过并搜索过,发现很多代码对我来说从来没有用过,这是我到目前为止拼凑起来的东西.当我说sorta我的意思是它在我的/sdcard/test.png上生成一个图像但是该文件是0字节,显然无法查看.
public class ScreenShot extends Activity{
View content;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.blank);
content = findViewById(R.id.blankview);
getScreen();
}
private void getScreen(){
Bitmap bitmap = content.getDrawingCache();
File file = new File("/sdcard/test.png");
try
{
file.createNewFile();
FileOutputStream ostream = new FileOutputStream(file);
bitmap.compress(CompressFormat.PNG, 100, ostream);
ostream.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
任何有关如何通过代码在Android屏幕截图拍摄的帮助将非常感谢谢谢!
===编辑===
以下是我正在使用的所有图像是在我的SD卡上制作的,不再是0bytes但是整个东西都是黑色的,上面没有任何内容.我已将活动绑定到我的搜索按钮,所以当我在手机上的某个地方时,我长按搜索,它应该拍摄屏幕截图但我只是得到一个黑色图像?一切都设置透明,所以我认为它应该抓住屏幕上的任何东西,但我只是一直变黑
表现
<activity android:name=".extras.ScreenShot"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:noHistory="true" >
<intent-filter>
<action android:name="android.intent.action.SEARCH_LONG_PRESS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent" …Run Code Online (Sandbox Code Playgroud) 我正在尝试在Android中加载我想要平铺的位图.我目前在视图中使用以下内容来显示位图:
canvas.drawBitmap(bitmap, srcRect, destRect, null)
Run Code Online (Sandbox Code Playgroud)
我本质上想在我的应用程序中使用此位图作为背景图像,并希望在X和Y方向上重复位图.
我已经看到了在TileMode.REPEAT不变BitmapShader类,但我不知道这是用于重复实际的位图或用于应用过滤器位图.
我正在处理裁剪图像类,但遇到了回收的位图问题:
03-02 23:14:10.514: E/AndroidRuntime(16736): FATAL EXCEPTION: Thread-1470
03-02 23:14:10.514: E/AndroidRuntime(16736): java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@428e5450
03-02 23:14:10.514: E/AndroidRuntime(16736): at android.graphics.Canvas.throwIfRecycled(Canvas.java:1026)
03-02 23:14:10.514: E/AndroidRuntime(16736): at android.graphics.Canvas.drawBitmap(Canvas.java:1096)
03-02 23:14:10.514: E/AndroidRuntime(16736): at android.graphics.Bitmap.createBitmap(Bitmap.java:604)
03-02 23:14:10.514: E/AndroidRuntime(16736): at eu.janmuller.android.simplecropimage.CropImage$1.prepareBitmap(CropImage.java:630)
03-02 23:14:10.514: E/AndroidRuntime(16736): at eu.janmuller.android.simplecropimage.CropImage$1.run(CropImage.java:636)
03-02 23:14:10.514: E/AndroidRuntime(16736): at eu.janmuller.android.simplecropimage.CropImage$6.run(CropImage.java:343)
03-02 23:14:10.514: E/AndroidRuntime(16736): at eu.janmuller.android.simplecropimage.Util$BackgroundJob.run(Util.java:175)
03-02 23:14:10.514: E/AndroidRuntime(16736): at java.lang.Thread.run(Thread.java:856)
Run Code Online (Sandbox Code Playgroud)
出现错误的行是mScale = 256.0F / mBitmap.getWidth();(第630行),请搜索此行以获取更多信息.
注意,在添加checkRotation()函数之前,代码没有此错误.并且该函数返回一个位图,该位图导致了异常.这是提示
此外,在我复制原始位图并回收旧位图的函数中,所以它不应该是问题的根源,建议您不要逐个查看代码,而是搜索关键字.谢谢你的帮助.
/**
* The activity can crop specific region of interest …Run Code Online (Sandbox Code Playgroud) 在我的Android应用程序中,我想动态设置将从URL加载的通知图标.为此,我使用setLargeIcon了NotificationBuilder的属性receiver.我提到了许多链接并尝试了各种解决方案,但无法获得所需的输出.虽然我从url下载了该图像并在通知中设置了该位图,但它并未显示.相反,它将setSmallIcon图像显示为大图标.我不知道我哪里错了.我在这里发布我的代码.请帮我解决这个问题.谢谢.
码:
@SuppressLint("NewApi")
public class C2DMMessageReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if ("com.google.android.c2dm.intent.RECEIVE".equals(action)) {
Log.e("C2DM", "received message");
final String fullName = intent.getStringExtra("message");
final String payload1 = intent.getStringExtra("message1");
final String payload2 = intent.getStringExtra("message2");
final String userImage = intent.getStringExtra("userImage");
Log.e("userImage Url :", userImage); //it shows correct url
new sendNotification(context)
.execute(fullName, payload1, userImage);
}
}
private class sendNotification extends AsyncTask<String, Void, Bitmap> {
Context ctx;
String message; …Run Code Online (Sandbox Code Playgroud) android bitmap android-notifications android-notification-bar google-cloud-messaging
我正在开发一个Android应用程序,在其中我将图像设置为imageview.现在编程我想改变位图图像颜色.假设我的图像最初是红色的,现在我需要将其更改为橙色.我怎样才能做到这一点?请帮忙.
这是我的代码.我设法改变了不透明度,但我不知道如何改变颜色.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageView iv = (ImageView) findViewById(R.id.img);
Drawable d = getResources().getDrawable(R.drawable.pic1);
Bitmap mNewBitmap = ((BitmapDrawable)d).getBitmap();
Bitmap nNewBitmap = adjustOpacity(mNewBitmap);
iv.setImageBitmap(nNewBitmap);
}
private Bitmap adjustOpacity( Bitmap bitmap ) {
int width = bitmap.getWidth();
int height = bitmap.getHeight();
Bitmap dest = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
int[] pixels = new int[width * height];
bitmap.getPixels(pixels, 0, width, 0, 0, width, height);
dest.setPixels(pixels, 0, width, 0, 0, width, height);
return dest;
}
Run Code Online (Sandbox Code Playgroud) 如何在不损失android质量的情况下减小图像大小.
我的项目中有一个ImageView,我必须在其中放入一个更大尺寸的图像.
我是android的新手.
请帮忙.
我有一个WPF BitmapImage,我从.JPG文件加载,如下所示:
this.m_image1.Source = new BitmapImage(new Uri(path));
Run Code Online (Sandbox Code Playgroud)
我想查询特定点的颜色.例如,像素(65,32)处的RGB值是多少?
我该怎么做?我采取这种方法:
ImageSource ims = m_image1.Source;
BitmapImage bitmapImage = (BitmapImage)ims;
int height = bitmapImage.PixelHeight;
int width = bitmapImage.PixelWidth;
int nStride = (bitmapImage.PixelWidth * bitmapImage.Format.BitsPerPixel + 7) / 8;
byte[] pixelByteArray = new byte[bitmapImage.PixelHeight * nStride];
bitmapImage.CopyPixels(pixelByteArray, nStride, 0);
Run Code Online (Sandbox Code Playgroud)
虽然我会承认有一些猴子看到,猴子继续这个代码.无论如何,是否有一种直接的方法来处理这个字节数组转换为RGB值?
我有一个图像上传器和裁剪器,它创建缩略图,我偶尔会在以下行中获得Out Of Memory异常:
Dim bm As Bitmap = System.Drawing.Image.FromFile(imageFile)
Run Code Online (Sandbox Code Playgroud)
错误的发生是微小的,非常罕见,但我总是想知道可能导致它的原因.imageFile变量只是一个Server.MapPath到图像的路径.
我很好奇,如果有人以前遇到过这个问题,他们是否有任何想法可能导致它?这可能是图像的大小吗?
我可以在必要时发布代码以及我所拥有的任何支持信息,但是我很乐意听到人们对此的看法.
据我所知,从BitmapSource转换为Bitmap的唯一方法是通过不安全的代码...像这样(来自Lesters WPF博客):
myBitmapSource.CopyPixels(bits, stride, 0);
unsafe
{
fixed (byte* pBits = bits)
{
IntPtr ptr = new IntPtr(pBits);
System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(
width,
height,
stride,
System.Drawing.Imaging.PixelFormat.Format32bppPArgb,ptr);
return bitmap;
}
}
Run Code Online (Sandbox Code Playgroud)
做反过来:
System.Windows.Media.Imaging.BitmapSource bitmapSource =
System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
bitmap.GetHbitmap(),
IntPtr.Zero,
Int32Rect.Empty,
System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
Run Code Online (Sandbox Code Playgroud)
框架中有更简单的方法吗?它不在那里的原因是什么(如果不是)?我认为它相当实用.
我需要它的原因是因为我使用AForge在WPF应用程序中执行某些图像操作.WPF希望显示BitmapSource/ImageSource,但AForge可以在Bitmaps上运行.
我的应用程序显示不同比例的图像,内部(centerInside)imageView调整大小.我需要的是从ImageView创建包括背景的位图(在这种情况下为黑色).
所以例如我有设备屏幕320x480,全屏imageView图像大小调整为280x480.我怎么能从它获得320x480位图?
在这个imageview的顶部,我有一些我不想包含在位图中的徽标或按钮,它们就像在顶层.我需要的只是带有图像的位图和来自某些边的黑色边框.