图像,UIimage,颜色 详解Paint的各类set方法 编译器警告:CGContextSaveGState: invalid context 0x0 让ImageView可使用gif的方法 深刻

ios 获取UIImage图片的像素尺寸

CGFloat fixelW = CGImageGetWidth(image.CGImage);html

CGFloat fixelH = CGImageGetHeight(image.CGImage);android

详解Paint的各类set方法

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

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

//    CGBitmapInfo bitmapInfo = kCGBitmapByteOrder32Little | kCGImageAlphaNoneSkipFirst;算法

//    CGBitmapInfo bitmapInfo = kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst;app

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

编译器警告: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这个方法,把颜色改变过来之后,它由于在最下层,因此直接被中层的给刷掉了,所以颜色又变了回去。post

       而setBackgroundColor(context.getResouce().getColor(R.color.XXX))呢,能够理解为改变的是最上层的颜色,无论我xml布局中的颜色是什么色,我在你布局颜色上层又给刷了回去。因此就显色了。

 

gif在线制做

图片在线动态分解

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

一、用android系统的透明效果

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

二、用ARGB来控制
Java代码 
半透明<Button android:background="#e0000000" /> 
透明<Button android:background="#00000000" /> 
 
三、设置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"
相关文章
相关标签/搜索