圖像,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"
相關文章
相關標籤/搜索