Android中的位图大小限制

乔西尔

在我的应用程序中,我使用intent从画廊获取图像文件名,并尝试将其加载到中TImage我试图加载它,LoadFromFile并获取JBitmap,将其转换为TBitmapAssign然后转换为我的TImage这仅适用于最大尺寸为98 x 98像素的位图...如果宽度或高度大于99或98像素,则大多数情况下会出现错误消息“位图尺寸太大”。有时我可以达到250 x 250 ...

即时消息试图找出原因,因为3天...

这是代码:

var

  jBitmapD, jSmallBitmap: JBitmap;
  BitmapD : TBitmap;
  imgW, imgH:Integer;

begin

...
    jBitmapD := TJBitmapFactory.JavaClass.decodeFile(StringToJString(imgGallerieChm));

    ...

    jSmallBitmap := TJBitmap.JavaClass.createScaledBitmap(jBitmapD, 98, 98, True);

    //jSmallBitmap := TJBitmap.JavaClass.createScaledBitmap(jBitmapD, 101, 101, True);
    //jSmallBitmap := TJBitmap.JavaClass.createScaledBitmap(jBitmapD, 1234, 567, True);
    ...

    imgH := jSmallBitmap.getHeight;
    imgW := jSmallBitmap.getWidth;

    bitmapD := TBitmap.Create; //Work if jSmallBitmap if smaller than 99 x 99

    //bitmapD.Create(98,98); //Work  if jSmallBitmap if smaller than 99 x 99
    //bitmapD.Create(222,333); //Don't work

    try
       bitmapD.SetSize(imgW,ImgH); //without this, its not working and it should be 99 x 99 or less... most of the time
       bitmapD := JBitmapToBitmap(jSmallBitmap);
       imgLepObs.Bitmap.Assign(bitmapD);
    finally
       bitmapD.Free;
    end;

如果大多数时候AImage和TBitmap小于99 x 99,则下一个函数起作用

function TfrmMain.JBitmapToBitmap(const AImage: JBitmap): TBitmap;
var
  bitmapSurface :TBitmapSurface;
begin
  bitmapSurface := TBitmapSurface.Create;
  try
    if JBitmapToSurface(AImage, bitmapSurface) then
      begin

      Result.Assign(bitmapSurface);
      end;
  finally
  bitmapSurface.Free;
  end;
end;

谢谢您的帮助...我即将放弃...

我尝试使用以下方法缩小位图:

bfOptions.inSampleSize := StrToInt(Edit1.Text); //
bfOptions.inJustDecodeBounds := False;
jSmallBitmap := TJBitmapFactory.JavaClass.decodeFile(StringToJString(imgGallerieChm), bfOptions);

它在大多数情况下都起作用...生成的位图越小,成功的可能性就越大。对于给定的大小,它有时可以工作,有时不能,有时在我重新启动应用程序后就可以工作...

恩妮

我有一个类似的问题。该问题是针对Android的delphi RTL中的一个已知错误。如果在线程内创建图像,则会出现异常:TBitmap.Create引发“位图大小太大”。这是因为画布工厂无法获得正确的canvastype。它必须由EMB修复。我在一个主线程中创建了位图,现在可以使用了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

XML中的Android位图图像大小

来自分类Dev

在Android中,绘制的圆圈要比等大小的位图大

来自分类Dev

限制Android中的应用缓存大小

来自分类Dev

在 xml 中调整位图的大小

来自分类Dev

限制Android文件大小

来自分类Dev

在Android中清除位图

来自分类Dev

在Android中缓存位图

来自分类Dev

UIImageView中的大小限制?

来自分类Dev

Android调整大小的位图保持宽高比

来自分类Dev

更改基于位图大小的设备Android Studio

来自分类Dev

如何调整位图图像的大小:Android

来自分类Dev

Android Wear位图DataItem资产大小

来自分类Dev

Android Glide:如何下载特定大小的位图?

来自分类Dev

android中的SQLite数据库有大小限制吗?

来自分类Dev

限制Android中的应用程序缓存大小

来自分类Dev

如何在ZXing中设置位图的大小?

来自分类Dev

Android从相机获取位图,将画布缩放为位图大小并保存位图

来自分类Dev

在Android中绘制大位图

来自分类Dev

android中的位图图像问题

来自分类Dev

操纵位图 android 中的颜色

来自分类Dev

在CSS中限制列的大小

来自分类Dev

如何限制高位图表中x或y值的范围?

来自分类Dev

Android-资源位图比文件中的位图使用更多的内存

来自分类Dev

如何在Android上计算位图的Java哈希图的大小

来自分类Dev

如何在Android位图中调整图像大小?

来自分类Dev

Android:如何使用画布/绘制位图缩放位图以适合屏幕大小?

来自分类Dev

在画布中绘制时如何调整位图的大小?

来自分类Dev

BitmapFactory从可绘制和文件中返回位图的差异大小

来自分类Dev

将位图设置为imageview中的特定大小