簡體   English   中英

如何使用RenderScript裁剪圖像?

[英]How do I crop an image using RenderScript?

我希望能夠使用RenderScript裁剪圖像。 這是我的裁剪函數:

uchar4 __attribute__((kernel)) crop(const uchar4 in, uint32_t x, uint32_t y){
    int minX = centerX - cropWidth;
    int maxX = centerX + cropWidth;

    int minY = centerY - cropHeight;
    int maxY = centerY + cropHeight;
    uchar4 out = in;

    if((minX < x < maxX ) && (minY < y < maxY)){
        return out;
    }
    else{
      out.r = 0;
      out.g = 0;
      out.b = 255;
      return out;
    }
}

這是所需的邏輯:
如果像素不在IF條件中指定的XY范圍內,那么我希望該像素為藍色。

出於某種原因,不管我怎么界限嚴格的, 沒有一個像素是藍色的。 有人可以向我解釋為什么嗎? 以及如何解決?
如果我將IF條件替換為false( if(false) ,那么它保證了ELSE代碼的執行),那么所有像素都是藍色的(如預期的那樣)。

minX < x < maxX

無法按照您期望的方式工作。 該代碼正在執行的操作是首先檢查minX < x ,然后將結果布爾值轉換為Integer(將為0或1),最后檢查該Integer是否小於maxX (它將始終為maxX )。 y發生了同樣的事情)。 您需要像這樣重寫該檢查:

(minX < x && x < maxX ) && (minY < y && y < maxY)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM