我一直试图将位图数组传递给另一个活动一个星期,但我仍然无法做到
public class HomePage extends Activity {
private GridView gridView;
public Bitmap[] mBitArray;
public Bitmap[] mBitArray5;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home_page);
gridView = (GridView) findViewById(R.id.GridView1);
mBitArray = new Bitmap[7];
try
{
//these images are stored in the root of "assets"
mBitArray[0] = getBitmapFromAsset("Gallary/g1p1.jpg");
mBitArray[1] = getBitmapFromAsset("Gallary/g1p2.jpg");
mBitArray[2] = getBitmapFromAsset("Gallary/g1p3.jpg");
mBitArray[3] = getBitmapFromAsset("Gallary/g1p4.jpg");
mBitArray[4] = getBitmapFromAsset("Gallary/g1p5.jpg");
mBitArray[5] = getBitmapFromAsset("Gallary/g1p6.jpg");
mBitArray[6] = getBitmapFromAsset("Gallary/g2p1.jpg");
mBitArray[7] = getBitmapFromAsset("g2p2.jpg");
mBitArray[8] = getBitmapFromAsset("hd-01.jpg");
mBitArray[9] = getBitmapFromAsset("hd-02.jpg");
mBitArray[10] = getBitmapFromAsset("hd-03.jpg");
mBitArray[11] = getBitmapFromAsset("hd-04.jpg");
} …Run Code Online (Sandbox Code Playgroud) 我有一个位图列表。我想要的是获取这些位图,并在画布的帮助下,从我拥有的位图列表中创建一个带有缩小图像的新位图(意思是,使它们非常小)。
我已经设法做到了,但是由于缩小了图像,图像看起来很糟糕。我尝试了很多东西,设置,创建新画布等。
简单的第一个解决方案看起来像这样(下面的代码),但是,正如我所说,图像看起来很糟糕。
public static Bitmap folderBitmap(Bitmap bitmap[]) {
Bitmap b = Bitmap.createBitmap(100, 100, Bitmap.Config.RGB_565);
Canvas c = new Canvas(b);
c.drawARGB(255, 255, 255, 255);
Paint paint = new Paint();
paint.setAntiAlias(false);
paint.setFilterBitmap(false);
paint.setDither(true);
c.drawBitmap(getBit(bitmap), 4, 4, paint);
c.drawBitmap(getBit(bitmap), 35, 4, paint);
c.drawBitmap(getBit(bitmap), 67, 4, paint);
c.drawBitmap(getBit(bitmap), 4, 35, null);
c.drawBitmap(getBit(bitmap), 35, 35, null);
c.drawBitmap(getBit(bitmap), 67, 35, null);
c.drawBitmap(getBit(bitmap), 4, 67, null);
c.drawBitmap(getBit(bitmap), 35, 67, null);
c.drawBitmap(getBit(bitmap), 67, 67, null);
return b;
}
private static Bitmap getBit(Bitmap[] b) {
Bitmap newBitmap = …Run Code Online (Sandbox Code Playgroud) 我有一个按需创建的位图。这个位图将包含一个带有一些文本的画布。
可以想象,此位图将具有固定大小,具体取决于要在画布上书写的字符的长度以及指定的文本大小。
例如:
我触发这样的方法:
createBitmapText("This is text", 25);
Run Code Online (Sandbox Code Playgroud)
那么现在,我如何计算位图的大小?
我试过这样的事情:
int width = text.lenght * textSize;
Run Code Online (Sandbox Code Playgroud)
然而,对于小字符串它似乎有效,但在长字符串上,有一个很大的空白空间。
有小费吗?
这是我的代码 ATM:
public void createBlabla(String text, int fontSize){
int padding = 15;
Bitmap largeWhiteBitmap = Bitmap.createBitmap(fontSize * text.length(), fontSize + padding, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(largeWhiteBitmap);
canvas.drawColor(0xffffffff);
Paint paint = new Paint();
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OUT));
paint.setTextSize(fontSize);
paint.setAntiAlias(true);
canvas.drawText(text, padding, fontSize, paint);
ImageView imv = (ImageView)MainActivity.this.findViewById(R.id.imageView1);
imv.setImageBitmap(largeWhiteBitmap);
}
Run Code Online (Sandbox Code Playgroud)
使用示例:
createBlabla("APP", 25);
Run Code Online (Sandbox Code Playgroud)
结果是:

如您所见,它看起来不错。
但是,第二个例子:
createBlabla("LONGER", 25);
Run Code Online (Sandbox Code Playgroud)

createBlabla("LONGEST TEXT EVAH", …Run Code Online (Sandbox Code Playgroud) 我正在尝试根据十六进制值更改位图的颜色。
在我尝试使用我的颜色选择器中选择的颜色使用 myBitmap.setPixel 之前,我只是试图让它与 rgb 一起工作,如下所示:
for (int x = 0; x <= myBitmap.getWidth(); x++) {
for (int y = 0; x <= myBitmap.getHeight(); y++) {
myBitmap.setPixel(x, y, Color.rgb(255, 255, 255));
}
}
Run Code Online (Sandbox Code Playgroud)
如果我像这样只设置一个像素:
bitmapPreview.setPixel(50, 50, Color.rgb(255, 255, 255));
Run Code Online (Sandbox Code Playgroud)
它工作得很好,但是当我尝试遍历位图像素时,它会强制关闭应用程序
关于如何进行这项工作的任何建议,或关于如何根据颜色选择器返回的值更改位图颜色的其他建议。从颜色选择器返回的值的格式是这样的:白色 = -1 或蓝色阴影 = -15658590
谢谢!
例如,我需要一个字符串数组:a[] = {A,B,C,...,Z}然后从数组中随机选择一个字母并在其上应用 windows 目录中的字体,然后以具有特定宽度和高度的位图图像的形式向用户呈现该特定字母(例如在我的表单中的图像框中将其显示为位图图像)。
我正在使用 .net framework 4.0,System.Drawing.Image.FromFile 来读取位图和 jpeg 格式的图像。
using (Image img = Image.FromFile("image file path")) { }
Run Code Online (Sandbox Code Playgroud)
我放了一个秒表只是为了跟踪所用的时间,它告诉我位图的结果比 jpeg 图像快??
相同的图像,但不同的格式和大小。示例结果如下:
image1.bmp (~4938 KB) - 耗时~5 ms。(更快)
image1.jpg (~545 KB)- 耗时~54 ms。(慢点)
我的问题是:
1. bitmap(大尺寸)中读取的方法有没有可能比jpeg(小尺寸)更快?为什么?
2.有人可以帮助解释不同文件格式的“Image.FromFile()”方法中发生的逻辑吗?
我搜索了 msdn 和 web,但找不到与文件格式相关的性能详细信息。
http://msdn.microsoft.com/en-us/library/4sahykhd%28v=vs.100%29.aspx
谢谢。
我正在尝试在创建按钮后添加/删除 BitmapButton 的边框。我还没有找到任何工作示例来更新 BitmapButton 的外观。说
self.btn = wx.BitmapButton(self.panel, wx.ID_ANY, bmp, pos=(...))
self.Bind(wx.EVT_BUTTON, self.OnClick, self.btn)
Run Code Online (Sandbox Code Playgroud)
然后在 OnClick
def OnClick(self):
# what should be here to give / remove the border of the button being clicked
Run Code Online (Sandbox Code Playgroud)
谢谢
在 c# 中使用 control.drawtobitmap 失败后,我的第二个选择是截取桌面的屏幕截图并裁剪出所需的部分。一旦我切换用户帐户,我的打嗝就会出现,虽然程序不会崩溃,但一旦用户切换,程序只会生成纯黑色图像。
我使用此代码作为参考: WebBrowser.DrawToBitmap() 或其他方法?
我想这在逻辑上是有道理的,因为这将有助于 Windows 节省资源。
在我的情况下,我有哪些选择/解决方案?
编辑 1 对测试代码进行了修改:
int c = 0;
while (true)
{
try
{
c++;
Rectangle formBounds = this.Bounds;
Bitmap bmp = new Bitmap(formBounds.Width, formBounds.Height);
using (Graphics g = Graphics.FromImage(bmp))
g.CopyFromScreen(formBounds.Location, Point.Empty, formBounds.Size);
bmp.Save("picture" + c.ToString() + ".jpg");
Thread.Sleep(5000);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
这在用户帐户上运行良好,但是一旦我切换用户,它就会返回异常:句柄无效。
有任何想法吗?
编辑2:
DrawToBitmap 中的错误不是完全随机的...如果我使用您提供的代码:
Bitmap bmp = new Bitmap(this.ClientRectangle.Width, this.ClientRectangle.Height);
this.DrawToBitmap(bmp, this.ClientRectangle);
bmp.Save(".\\picture.jpg");
Run Code Online (Sandbox Code Playgroud)
它完美地工作,例如:http : //oi61.tinypic.com/1z23ynp.jpg
但是,当我右键单击 Web 浏览器控件时,DrawToBitmap 将返回一个空白图像。
示例: …
我正在使用 LibVNC 库创建 VNC 服务器。在初始化服务器时,我需要向库提供这些参数。
每样本位数、每像素样本数和每像素字节数。
我有一个从 MSPaint 保存为 24 位 bmp 的位图。那么这个图像的每个样本的位数、每个像素的样本和每个像素的字节数的值是多少。
提前致谢。
我需要在 Qt 中快速绘制小部件,但我不想使用任何准备好的东西。我有一些浮动数据,例如QVector< float >数据,我需要在小部件上绘制它。但我不希望使用paintEvent和QPainter直接就可以了。有没有机会将此数据转换为位图(像素图?)并直接加载它以显示在小部件上?如何从浮点数创建位图?