• RGB888 转 RGB565


    Android 的坑 

    ByteBuffer buffer = ByteBuffer.allocate(mPreset.getCoverImg().getByteCount());
    mPreset.getCoverImg().copyPixelsToBuffer(buffer);
    mPixelBuf = buffer.array(); 获取的像素点数据组合出来会失真



    下面是不失真的做法
    int w = bitmap.getWidth(); int h = bitmap.getHeight(); // Bitmap bitmap2 = Bitmap.createBitmap(w , h , Bitmap.Config.ARGB_8888); for(int i = 0 ; i < h ; i++) for(int j = 0 ; j < w; j ++) { // 获取每个像素点 int argb = bitmap.getPixel(j , i ); int r =( argb>>16)&0xff; int g =( argb>>8)&0xff; int b =argb&0xff; //一个个点转换 取R前5位 G前 6位 B前5位 组合成16位 的一个像素点 headData[data_len++] = (byte) (((r & 0xf8) | (g >>5 )) & 0xff); headData[data_len++] = (byte) ((((g << 3) & 0xE0) |( b >> 3)) & 0xff); // int a =(argb>>24)&0xff; // System.out.println("a的值:"+a); // int rgb =((a*256+r) * 256 + g) * 256 + b; // bitmap2.setPixel(j , i , rgb); }

    iOS

     CGImageRef imImage = image.CGImage;
     CFDataRef mDataRef =   CGDataProviderCopyData(CGImageGetDataProvider(imImage));
    
        UInt8 *mPixelBuf = (UInt8 *)CFDataGetBytePtr(mDataRef);
        CFIndex length = CFDataGetLength(mDataRef);
        for(int i=0;i<length;i+=4){
               int r = i;
               int g = i+1;
               int b = i+2;
                 
               int red   = mPixelBuf[r];
               int green = mPixelBuf[g];
               int blue  = mPixelBuf[b];
    //           int a  = mPixelBuf[i+3];
    //        RGB565是这样算出来的: 16位 RGB        转2进制。R取5位,G取6位,B取5位。然后结合起来转成16进制即可。
    //        例如:rgb(105,105,105)
    //        转成2进制:为1101001,1101001,1101001
    //        取前5,6,5位:11010,110100,11010
    //        结合起来转成16进制:d69a
            headData[data_len++] = (red & 0xf8) | (green >>5 );
            headData[data_len++] = ((green << 3) & 0xE0) |( blue >> 3) ;
    
    
           }
  • 相关阅读:
    Android开发——弹性滑动的两种实现方式
    管理知识和解决信息爆炸问题的4种方法
    京东金融的业务版图
    京东金融的业务版图
    虚幻引擎4艺术大师
    Android开发——View滑动的三种实现方式
    Android开发之Path类使用详解,自绘各种各样的图形!
    C# Dictionary的遍历理解
    我想走全产业链发展路线
    Androd安全——混淆技术完全解析
  • 原文地址:https://www.cnblogs.com/zhujin/p/16320225.html
Copyright © 2020-2023  润新知