在 WPF 和 C# 中工作,我有一个 TransformedBitmap 对象,我可以:
不幸的是,在这一点上,我真的很难完成这两件事中的任何一件。
任何人都可以提供任何帮助或指出我可能缺少的任何方法吗?
随着时间的推移,我尝试在我的基于 tile 的游戏中实现视图寻呼机 - 并且滑动很笨拙。我执行了@romangui 建议的必要性能措施,并发现重绘我的 gaem 字段需要大约 48 毫秒(太长了) - 我已经扁平化布局,消除了过度绘制有我的自定义布局管理器等。
我发现在 GN 上绘制一个图块需要大约 0.600 毫秒 - 对于所有 81 个图块来说太长了。时间实际上花在Canvas.drawBitmap(...)
任何想法如何提高性能?我只有 6 个不同的位图,它们被加载一次并重复使用。ARGB_8888。当然,它们不一定与实际显示的尺寸相匹配。
如果在测量布局后针对实际显示尺寸预先渲染它们,我会获得更好的性能吗?
或者我应该咬紧牙关,用我的游戏状态预渲染一张大的位图只是为了滚动?
我试图使用RenderScript创建一个模糊的位图,将其设置为包含ImageView的LinearLayout的背景.我还想要一个清晰的位图原始副本,以便我可以在ImageView中将其设置为图像.
这是我的代码:
ImageView mainImage;
Bitmap mainBMP, blurredBMP
LinearLayout background;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_work_area);
getImage(); // obtain bitmap from file
mainImage.setImageBitmap(mainBMP); // set the original bitmap in imageview
// create a blurred bitmap drawable and set it as background for linearlayout
BitmapDrawable drawable = new BitmapDrawable(getResources(), blur(mainBMP));
mainBackground.setBackground(drawable);
registerForContextMenu(objectImage);
registerForContextMenu(textArea);
}
private void getImage(){
String filename = getIntent().getStringExtra("image");
try {
FileInputStream is = this.openFileInput(filename);
mainBMP = BitmapFactory.decodeStream(is);
is.close();
} …Run Code Online (Sandbox Code Playgroud) 我使用的是Nexus 5X模拟器,密度为420 dpi,屏幕尺寸为1080x1920 px。我将原始大小的位图加载到ImageView中。在磁盘上,位图的大小为1.3 MB和1280x851 px。我的ImageView尺寸是宽度:全屏,高度:全屏。我的图像具有32位色深=每个像素4个字节。我计算出内存的预期大小为1080x1920x4 = 8.29 MB。
当我运行代码并加载图像时,它在内存中的大小约为30MB。原因是什么?如何调整计算以获得正确的估计?我当然知道将缩小图像加载到一个小容器中的方法,但是我试图弄清楚如何计算完整图像的大小。
谢谢
目前,我正在使用Mobile Vision开发一个Android程序。我正在使用“ TextRecognizer”类,方法之一是.detect(Frame frame)。现在,我有一个要输入的图像,但是该图像是文件类型“位图”。我试图通过强制转换将其转换为“框架”,但是没有用。如果有人有任何建议,将不胜感激。
我试图从MS Access DB中获取图像.正确获取数据,但是当我尝试显示某些错误时显示.我显示图片的代码是,
...
byte[] photoBytes = (byte[])res[11];
var ms = new System.IO.MemoryStream(photoBytes);
image.Image = new System.Drawing.Bitmap(ms);
...
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我错误或错误概率在哪里?
我的功能是
public OleDbDataReader studentInfo(String adm_no)
{
OleDbConnection con = new OleDbConnection(ConnStr);
con.Open();
OleDbCommand command = new OleDbCommand("SELECT * FROM student_info WHERE adm_no = '"+adm_no+"'", con);
OleDbDataReader res = command.ExecuteReader();
return res;
}
Run Code Online (Sandbox Code Playgroud) 我没有在任何地方找到这个问题的答案.
位图图像在应用程序中处理,这意味着没有文件路径来获取图像.
下面是如何将Uri转换为位图
if (requestCode == RC_PHOTO_PICKER && resultCode == RESULT_OK) {
Uri selectedImageUri = data.getData();
imageview.setImageURI(selectedImageUri);
try {
bitmap1 = MediaStore.Images.Media.getBitmap(this.getContentResolver(), selectedImageUri);
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(this, "" + e, Toast.LENGTH_SHORT).show();
}
bitmap1.compress(Bitmap.CompressFormat.JPEG, 7, bytearrayoutputstream);
BYTE = bytearrayoutputstream.toByteArray();
bitmap2 = BitmapFactory.decodeByteArray(BYTE, 0, BYTE.length);
imagetoo.setImageBitmap(bitmap2);
}
Run Code Online (Sandbox Code Playgroud)
我现在如何重新转换为Uri
我有一个简单的C#脚本生成一个Bitmap,将其保存到硬盘驱动器(PNG),检查文件大小,并根据它将移动或删除图像的文件的大小.
Bitmap bmp = new Bitmap(1024, 768);
bmp.save(@"C:\User\...\image.png");
FileInfo fi = new FileInfo (@"C:\User\...\image.png");
if (fi.length > 50000){
//do Something
}
Run Code Online (Sandbox Code Playgroud)
有没有其他方法来获得压缩(RLE)大小Bitmap而不在本地存储它?
我正在为android开发自定义视图.为此我想让用户能够选择和使用图像,就像使用时一样ImageView
在attr.xml中,我添加了以下代码.
<declare-styleable name="DiagonalCut">
<attr name="altitude" format="dimension"/>
<attr name="background_image" format="reference"/>
</declare-styleable>
Run Code Online (Sandbox Code Playgroud)
在自定义视图中,我得到的值Drawable是xml中提供的值app:background_image="@drawable/image"
TypedArray typedArray = getContext().obtainStyledAttributes(arr, R.styleable.DiagonalCut);
altitude = typedArray.getDimensionPixelSize(R.styleable.DiagonalCut_altitude,10);
sourceImage = typedArray.getDrawable(R.styleable.DiagonalCut_background_image);
Run Code Online (Sandbox Code Playgroud)
我想使用sourceImage它创建一个Bitmap ,这是一个Drawable对象.
如果我出错的方式请提供替代方案.
嗨,大家好,我正在大学从事基本的隐写术项目.我操纵我的位图,但某处有一个错误.我设置一个断点只是为了检查.save()方法之前的值和像素看起来很好但是当我保存它并打开新图像时,一些像素是预期的+ -1位实例.这是代码:
public static class EncryptController
{
public static void EncryptMessage(Bitmap oldImage,string imagePath, DataSteg k, string t)
{
Bitmap newImage = new Bitmap(oldImage.Width, oldImage.Height);
ImageFormat imageFormat = ImageCheck.GetFormat(oldImage);
string data = k.EncryptData();
int keyLength = data.Length;
int bitmapPos = 0;
for (int i = 0, n = oldImage.Size.Width; i < n; i++)
{
for (int j = 0, z = oldImage.Size.Height; j < z; j++)
{ //data = "010010110110000101101100011000110110100001101111"
var tt = oldImage.GetPixel(i, j);
if ((Convert.ToInt32(data[bitmapPos].ToString()) != CheckPixelVale(newImage.GetPixel(i, j)))&&keyLength>0)
{ …Run Code Online (Sandbox Code Playgroud)