Использование:
new_df[['df_t1', 'df_t2', 'df_val']] = new_df['df_test'].str.rsplit('),', expand=True)
new_df[['df_t1', 'df_t2']] += ')'
print (new_df)
df_test df_t1 df_t2 df_val
0 (-, 136), (-, 136), 1.0 (-, 136) (-, 136) 1.0
1 (-, 136), (-, 438), 0.5 (-, 136) (-, 438) 0.5
2 (-, 136), (-, 257), 0.5 (-, 136) (-, 257) 0.5
Базовые данные UIImage
могут различаться, поэтому для одного и того же «изображения» можно иметь разные размеры данных. Единственное, что вы можете сделать, это использовать UIImagePNGRepresentation
или UIImageJPEGRepresentation
, чтобы получить эквивалентные конструкции NSData
для каждой из них, а затем проверить их размер.
SWIFT 4 +
let imgData = image?.jpegData(compressionQuality: 1.0)
debugPrint("Size of Image: \(imgData!.count) bytes")
можно использовать этот прием для обнаружения размера изображения.
Я не уверен в вашей ситуации. Если вам нужен фактический размер байта, я не думаю, что вы это сделаете. Вы можете использовать UIImagePNGRepresentation или UIImageJPEGRepresentation, чтобы получить объект NSData сжатых данных изображения.
Я думаю, вы хотите получить фактический размер несжатого изображения (данные в пикселях). Вам необходимо преобразовать UIImage * или CGImageRef в необработанные данные. Это пример преобразования UIImage в IplImage (из OpenCV). Вам просто нужно выделить достаточно памяти и передать указатель на первый аргумент CGBitmapContextCreate.
UIImage *image = //Your image
CGImageRef imageRef = image.CGImage;
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
IplImage *iplimage = cvCreateImage(cvSize(image.size.width, image.size.height), IPL_DEPTH_8U, 4);
CGContextRef contextRef = CGBitmapContextCreate(iplimage->imageData, iplimage->width, iplimage->height,
iplimage->depth, iplimage->widthStep,
colorSpace, kCGImageAlphaPremultipliedLast|kCGBitmapByteOrderDefault);
CGContextDrawImage(contextRef, CGRectMake(0, 0, image.size.width, image.size.height), imageRef);
CGContextRelease(contextRef);
CGColorSpaceRelease(colorSpace);
IplImage *ret = cvCreateImage(cvGetSize(iplimage), IPL_DEPTH_8U, 3);
cvCvtColor(iplimage, ret, CV_RGBA2BGR);
cvReleaseImage(&iplimage);
Используйте свойство CGImage объекта UIImage. Затем с помощью комбинации CGImageGetBytesPerRow *
CGImageGetHeight, добавьте sizeof UIImage, вы должны быть в пределах нескольких байтов от фактического размера.
Это вернет размер изображения в несжатом виде, если вы хотите использовать его для таких целей, как malloc при подготовке к обработке растрового изображения (при условии, что 4-байтовый формат пикселей составляет 3 байта для RGB и 1 для Alpha):
int height = image.size.height,
width = image.size.width;
int bytesPerRow = 4*width;
if (bytesPerRow % 16)
bytesPerRow = ((bytesPerRow / 16) + 1) * 16;
int dataSize = height*bytesPerRow;