图像,UIimage,颜色

ios 获取UIImage图片的像素尺寸

CGFloat fixelW = CGImageGetWidth(image.CGImage);

CGFloat fixelH = CGImageGetHeight(image.CGImage);

详解Paint的各种set方法

CGBitmapContextCreate unsupported parameter combination 问题详解及解决办法

在使用CGBitmapContextCreate创建位图时,此函数会判断Color Space和Bitmap info是否匹配,通过设置

//    CGBitmapInfo bitmapInfo = kCGBitmapByteOrder32Little | kCGImageAlphaNoneSkipFirst;

//    CGBitmapInfo bitmapInfo = kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst;

来让其两者匹配,kCGBitmapByteOrder32Little设置的是Bitmap info,kCGImageAlphaPremultipliedFirst设置的是Color Space。

编译器警告:CGContextSaveGState: invalid context 0x0

后来发现问题出现在这处: UIGraphicsBeginImageContextWithOptions(weakSelf.size, YES, 0.0);  因为weakSelf.size的值CGSizeMake(0, 0),导致错误。

 

Android 代码中使用Color工具类 parseColor

arg1.setBackgroundColor(Color.parseColor("#87CEFA"));

 

简述setBackgroundResource、setBackgroundColor、setBackgroundDrawable的区别

总结一下:setBackgroundResource(R.color.XXX)改变的颜色是最下层的颜色,当改变完颜色以后,因为我头部布局在xml文件中默认颜色是white,所以又给white遮盖掉了。

       xml 文件中布局默认的颜色呢,可以理解为显示在中层。当我用Resource这个方法,把颜色改变过来以后,它因为在最下层,所以直接被中层的给刷掉了,因此颜色又变了回去。

       而setBackgroundColor(context.getResouce().getColor(R.color.XXX))呢,可以理解为改变的是最上层的颜色,不管我xml布局中的颜色是什么色,我在你布局颜色上层又给刷了回去。所以就显色了。

 

gif在线制作

图片在线动态分解

 Android设置透明、半透明等效果

1、用android系统的透明效果

android:background="@android:color/transparent" 

2、用ARGB来控制
Java代码 
半透明<Button android:background="#e0000000" /> 
透明<Button android:background="#00000000" /> 
 
3、设置alpha
Java代码 
View v = findViewById(R.id.content);//找到你要设透明背景的layout 的id 
v.getBackground().setAlpha(100);//0~255透明度值 
 

gif 格式图片详细解析

 

让ImageView可以使用gif的方法 good

Android中ImageView无法居中的问题

原来是父类视图的属性没有设置的原因,将父类视图设置为居中边可解决,即android:gravity="center":

 

深入理解JPEG图像格式Jphide隐写

0x00 隐写原理

Jphide是基于最低有效位LSB的JPEG格式图像隐写算法,使用JPEG图像作为载体是因为相比其他图像格式更不容易发现隐藏信息,因为JPEG图像在DCT变换域上进行隐藏比空间域隐藏更难检测,并且鲁棒性更强,同时Blowfish算法有较强的抗统计检测能力。

由于JPEG图像格式使用离散余弦变换(Discrete Cosine Transform,DCT)函数来压缩图像,而这个图像压缩方法的核心是:通过识别每个8×8像素块中相邻像素中的重复像素来减少显示图像所需的位数,并使用近似估算法降低其冗余度。因此,我们可以把DCT看作一个用于执行压缩的近似计算方法。因为丢失了部分数据,所以DCT是一种有损压缩(Loss Compression)技术,但一般不会影响图像的视觉效果。

0x01 隐写过程

Jphide隐写过程大致为:先解压压缩JPEG图像,得到DCT系数;然后对隐藏信息用户给定的密码进行Blowfish加密;再利用Blowfish算法生成伪随机序列,并据此找到需要改变的DCT系数,将其末位变为需要隐藏的信息的值。最后把DCT系数重新压回成JPEG图片,下面是个人对隐写过程理解画出的大致流程图。

JPEG文件编/解码详解

图像文件格式

 

static public String s_ARGBToRGBA(String argb)
    {
        StringBuilder sb = new StringBuilder();
        if (argb.length() == 9)
        {
            sb.append("#");
            sb.append(argb.substring(3,5));
            sb.append(argb.substring(5,7));
            sb.append(argb.substring(7,9));
            sb.append(argb.substring(1,3));
            //#FF 00 11 22
            MyLog.logMsg("s_ARGBToRGBA argb: " + argb + " convert to:" + sb.toString());
//            return sb.toString();
            return "#" + argb.substring(3,5) + argb.substring(5,7) + argb.substring(7,9) + argb.substring(1,3);
        }
        else if (argb.length() == 7)
        {
            //#00 11 22
            sb.append("#");
            sb.append(argb.substring(1,3));
            sb.append(argb.substring(3,5));
            sb.append(argb.substring(5,7));
            sb.append("FF");
            MyLog.logMsg("s_ARGBToRGBA argb: " + argb + " convert to:" + sb.toString());
//            return sb.toString();
            return "#" + argb.substring(1,3) + argb.substring(3,5) + argb.substring(5,7) + "FF";
        }
        else
        {
            MyLog.logMsg("s_ARGBToRGBA argb: " + argb);
            return argb;
        }
    }


* "hamburger".substring(4, 8) returns "urge"
* "smiles".substring(1, 5) returns "mile"

 

posted @ 2017-10-25 18:46  米粥米  阅读(178)  评论(0编辑  收藏  举报