标签: bitmap

如何在OpenGL Android中镜像纹理位图?

当我将纹理应用于形状时,我一直看到它被镜像.GLU.gluLookAt设置为5个单位,因此它是GLU.gluLookAt(gl,0,0,5,0,0,0,0,2,0);. 如果下降5个单位,则x轴将反转,这将是一个更大的问题.

你能告诉我如何将正在加载的位图镜像为纹理吗?我想保持轴的位置和绘制形状的方式,我只想自动镜像位图.

你能告诉我怎么做吗?也许给我一个代码序列来反映x轴上的位图?

android textures opengl-es bitmap mirror

1
推荐指数
1
解决办法
1426
查看次数

将字符串转换为uri到位图以在ImageView中显示

我已经看了一遍解决我的问题,似乎无法弄明白.我敢肯定它可能是1或2条简单的线条,希望有人可以引导我朝着正确的方向前进.

在我的应用中,用户可以单击将打开图库的按钮.一旦他们选择了图像,它就会在我的应用程序中的ImageView中显示该图像.那部分工作得非常好.最初,我只是从画廊返回一个uri,我会直接显示:

imageView1.setImageURI(myUri);
Run Code Online (Sandbox Code Playgroud)

好吧,显然我现在遇到了可怕的"Out Of Memory"错误,如果用户连续多次重新加载该页面,那么我必须清理我的代码以缩小图像.我通过实现一个位图类来实现这一点,该类将图像转换为位图并为我缩小位图.现在,我的ImageView显示代码如下所示:

imageView1.setImageBitmap(bitmap1);
Run Code Online (Sandbox Code Playgroud)

那部分工作正常.这是问题:

我将uri路径转换为字符串,然后将其保存在SharedPreference中.这样当用户退出应用程序并稍后返回时,它们自动显示的图像就会显示出来.我像这样转换uri:

...
selectedImageUri = data.getData();
String selectedImagePath;
selectedImagePath = getPath(selectedImageUri);
...
Run Code Online (Sandbox Code Playgroud)

检索SharedPreference字符串的旧方法,将其转换为uri,然后显示它工作正常.(当然,除了Out Of Memory错误)它看起来像这样:

Uri myUri = Uri.parse(selectedImagePath);
imageView1 = setImageURI(myUri);
Run Code Online (Sandbox Code Playgroud)

"selectedImagePath"显然是我从SharedPreference中检索到的String.再次,这工作正常,但如果重新加载太多次将抛出错误.

现在不工作的部分是当我尝试实现新的Bitmap转换时,我可以缩放位图而不会出现内存错误.这是代码:

Uri myUri = Uri.parse(selectedImagePath)
Bitmap bitmap = getThumbnail(myUri);
imageView1.setImageBitmap(bitmap);
Run Code Online (Sandbox Code Playgroud)

这没什么.原始图像选择显示图像正常但当我返回到此屏幕并尝试从SharedPreference解析字符串然后将其转换为位图时,什么都没有显示."getThumbnail"方法的代码直接来自THIS POST --->

如何从Uri获取位图?

这是第三个答案.

有人有主意吗?对不起,超长的帖子,但我宁愿解释我的问题,而不是提供足够的信息.对不起,如果在其他地方得到了回答.我一直在寻找其他问题几个小时,并没有找到解决我的问题的任何东西.

谢谢.

memory android uri bitmap preference

1
推荐指数
1
解决办法
2万
查看次数

android 495KB图片占用10MB的堆大小

我正在尝试在我的应用程序中加载大小为495KB的图像.如果我加载此图像比堆大小从25MB增加到35MB,这导致我的应用程序中出现真正的内存问题.如果我不加载此图像比堆大小保持在25MB.任何人都可以告诉它为什么需要这么多的堆大小?

图片如下 在此输入图像描述

我用来加载图片的代码是

    InputStream s4 = getResources().openRawResource(R.drawable.parallax_layer4);    
    FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT);
    System.gc();
    if(bitmap4 != null) {
        bitmap4.recycle();
    }
    s3 = null;
    System.gc();     

    bitmap4 = bitmap(s4);
    layer4Back = new ImageView(this);
    layer4Back.setImageBitmap(bitmap4);
    layer4Back.setScaleType(ScaleType.FIT_XY);
    parallaxLayout.addView(layer4Back, 3, lp);
    try {
        s4.close();
    } catch (IOException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
    }
    s4 = null;
    System.gc();

private static Bitmap bitmap(final InputStream is) {
    Bitmap bitmap = null;
    System.gc();
    Options options = new BitmapFactory.Options();
    options.inPreferredConfig = Bitmap.Config.RGB_565;
    options.inSampleSize = 1; 

    try { …
Run Code Online (Sandbox Code Playgroud)

heap android bitmap

1
推荐指数
1
解决办法
3565
查看次数

位图占据了很多记忆

我收到一个错误,说Bitmaps正在使用大量内存.

我知道我应该使用bitmap.recyle()但我不知道在哪里放它,无论我把它放在哪里我得到一个错误说我正在尝试使用循环位图.

如果有人能提供帮助,那就太棒了.

这是我的相关代码:

public class PictureViewer extends SherlockActivity implements
    android.view.GestureDetector.OnGestureListener {

private ViewFlipper viewFlipper = null;
private GestureDetector gestureDetector = null;
ArrayList<Integer> number = new ArrayList<Integer>();
DownloadBitmap bit = new DownloadBitmap();

int j = 1;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // Remove title bar
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.pictureviewer);
    viewFlipper = (ViewFlipper) findViewById(R.id.viewflipper);
    gestureDetector = new GestureDetector(this);

    for (int i = 1; i <= 65; ++i)
        number.add(i);
    Collections.shuffle(number);

    loadImage();
    loadImage();
}

public void loadImage() {

    if (j == 65) { …
Run Code Online (Sandbox Code Playgroud)

android bitmap

1
推荐指数
1
解决办法
3128
查看次数

从URL保存GIF

我想保存一个由互联网地址驱动的GIF.当我从浏览器请求文件时,我收到以下字符:

GIF87a½€ÿÿÿ,½þ„©Ëí£œ´Ú‹³Þ¼û†âH–æ‰Ádk
ÇòòµuÏú>æùôãEX¯–Ѝ²µ‚‰"<}O)Ò¨¬:kÜ'Õª]þ¢`ìc
­Ú”ìvöhe;Ï]¸;oßÂyþ|Þ‡µe§'hÄÔdhW÷§H#&gö¨ð…G™Gy(‰ x÷j†øyÙˆI8uJZZiª
™ªÚº¹i  {ç‰Zj™ˆwšµ7
©;é›9Æy¤VÄ$ú;œË›ÙÛI¬,œ=}|,l¼Û˧¸ìæ%]h~n»8»ÌíIv—Fe6¿‹¸®0YÉ
J7k8”•pÕá C¬4Èráâ;zü2¤È‘$Kš
Run Code Online (Sandbox Code Playgroud)

我可以使用这些字符检索GIF格式吗?

c# format image bitmap image-processing

1
推荐指数
1
解决办法
858
查看次数

Android:使用ImageLoader降低了图像质量

我使用https://github.com/thest1/LazyList进行图像缓存.我必须全屏显示图像.但是图像质量有很大的损失.哪个代码我必须改变以获得原始image.thanks提前.

android image bitmap bitmapfactory

1
推荐指数
1
解决办法
1190
查看次数

使用触摸事件移动图像

当我们从左到右和从右到左移动(触摸)图像时,我需要一个示例代码.请帮我.

此致,
chakri

android image bitmap xamarin.android

1
推荐指数
1
解决办法
2万
查看次数

裁剪图像而不创建新文件

我有这段代码从图库中获取图像,然后将其传递给意图进行裁剪.一切工作正常,但这个无论是在画廊创造了新的裁剪图像或裁剪一个替换旧的形象,但我想要做的就是让新的裁剪后的图像在我的节目临时存储,直到它再次被用户更改.

这是我的代码:

Uri selectedImage = imageReturnedIntent.getData();

final Intent intent = new Intent("com.android.camera.action.CROP");
                intent.setData(selectedImage);
                intent.putExtra("outputX", width);
                intent.putExtra("outputY", height);
                intent.putExtra("aspectX", width);
                intent.putExtra("aspectY", height);
                intent.putExtra("scale", true);
                intent.putExtra("noFaceDetection", true);
                intent.putExtra("output", selectedImage); // with this enabled it replaces the original image and without it creates new one in gallery.
                startActivityForResult(intent, 23);
Run Code Online (Sandbox Code Playgroud)

android crop bitmap android-intent

1
推荐指数
1
解决办法
2072
查看次数

由绘制到位图引起的Android OOM

这是我的代码:

int[] image = {R.drawable.image1, R.drawable.image2, R.drawable.image1, R.drawable.image2,
        R.drawable.image1, R.drawable.image2, R.drawable.image1, R.drawable.image2,
        R.drawable.image1, R.drawable.image2, R.drawable.image1, R.drawable.image2,
        R.drawable.image1, R.drawable.image2, R.drawable.image1, R.drawable.image2,
        R.drawable.image1, R.drawable.image2, R.drawable.image1, R.drawable.image2,
        R.drawable.image1, R.drawable.image2, R.drawable.image1, R.drawable.image2};
Run Code Online (Sandbox Code Playgroud)

和getView:

@Override
    public View getView(int position, View convertView, ViewGroup parent) {

        convertView=LayoutInflater.from(getApplicationContext()).inflate(R.layout.item, null);
        ImageView imageView = (ImageView) convertView.findViewById(R.id.imageView);
        imageView.setBackgroundResource(image[position]);

        return convertView;
    }
Run Code Online (Sandbox Code Playgroud)

一切都好.没有OOM.

然后,我想首先对drawable进行采样:

public static Bitmap sampleImage(Context context, int resourceId, int sampleSize) {        
            Bitmap resizeBmp = null;
            BitmapFactory.Options opts = new BitmapFactory.Options();
            opts.inSampleSize = sampleSize;
            resizeBmp = BitmapFactory.decodeResource(context.getResources(), resourceId, opts);

            return …
Run Code Online (Sandbox Code Playgroud)

android bitmap

1
推荐指数
1
解决办法
894
查看次数

Delphi没有正确编写我的文件头

我认为不是使用带有8位BMP的TImage而是保存我自己的Bitmap - 我之前已经用Delphi做了几次.但由于某些原因我无法弄清楚,文件的前两个字节总是写为四个字节!我的标题记录是

type
 BitmapH = Record
  head : WORD;
  filesize : DWORD;
  reserved : DWORD;
  bmpoffset : DWORD;
  bmpheadersize : DWORD;
  width : DWORD;
  height : DWORD;
  planes : WORD;
  bpp : word;
  comp : longint;
  bmdatasize : longint;
  hres : longint;
  vres : longint;
  numofcolors : longint;
  importantcolors : longint;
  palette : array[0..1023] of byte;
 end;
Run Code Online (Sandbox Code Playgroud)

我已经尝试过将其更改为2字节数组仍然没有去.即使它改为head:byte; 它仍然写入1个字节,然后将垃圾推送到下一个3.我必须遗漏一些简单的东西!

这是我写文件头的方式 -

var BM : file of BitmapH;
var BMD : file of byte;
var header : BitmapH;
var i …
Run Code Online (Sandbox Code Playgroud)

delphi file-io bitmap

1
推荐指数
1
解决办法
272
查看次数