图像,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布局中的颜色是什么色,我在你布局颜色上层又给刷了回去。所以就显色了。
1、用android系统的透明效果
android:background="@android:color/transparent"
半透明<Button android:background="#e0000000" />
透明<Button android:background="#00000000" />
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"