Это просто пример c. Вам нужно будет его настроить.
Image* img = new Image();
img->initWithImageFile("my file.png");
Затем вы перебираете каждый пиксель изображения и определяете, какие пиксели на границе изображения непрозрачны, и используете это для вычисления прямоугольника.
int leftMost;
int rightMost;
int upperMost;
int lowerMost;
unsigned char *data = new unsigned char[img->getDataLen()*x];
data = img->getData();
for(int i=0;i<img->getWidth();i++)
{
for(int j=0;j<img->getHeight();j++)
{
unsigned char *pixel = data + (i + j * img->getWidth()) * x;
// You can see/change pixels' RGBA value(0-255) here !
// unsigned char r = *pixel;
// unsigned char g = *(pixel + 1);
// unsigned char b = *(pixel + 2) ;
unsigned char a = *(pixel + 3);
if (a>0){
// this pixel is opaque. You can use a different threshold for transparency besides 0, depending on how transparent you won't to consider as "transparent".
//Complete yourself:
if(i<leftMost){
leftMost = i;
}
if(i> rightMost){
rightMost = i;
}
if(j> upperMost){
upperMost = j;
}
if(j< lowerMost){
lowerMost = j;
}
}
}
}
В разделе «Завершите себя» вы просто отслеживаете границу, где находится первый / последний непрозрачный пиксель. Вам нужны четыре переменные, по одной для каждой стороны.
В конце l oop вы просто создаете прямоугольник, используя четыре точки в качестве сторон прямоугольника!
Если это решает ваша проблема, отметьте ее как правильную.