如何在iOS上使用ImageMagick的ProgressMonitor功能?
我在ios上使用Image Magick,并将服务器上使用的一些命令行转换为ConvertImageCommand。一切都很顺利。 我已经在命令中添加了-monitor作为参数,这样我就可以看到图像上的每一个微小进展(加载、调整大小、裁剪等) 但是,我想显示一个进度条,通知用户图像处理的进度。 我正在寻找一个关于如何使用进度监视器功能的非常简单的示例如何在iOS上使用ImageMagick的ProgressMonitor功能?,ios,imagemagick,progressmonitor,Ios,Imagemagick,Progressmonitor,我在ios上使用Image Magick,并将服务器上使用的一些命令行转换为ConvertImageCommand。一切都很顺利。 我已经在命令中添加了-monitor作为参数,这样我就可以看到图像上的每一个微小进展(加载、调整大小、裁剪等) 但是,我想显示一个进度条,通知用户图像处理的进度。 我正在寻找一个关于如何使用进度监视器功能的非常简单的示例 SetImageProgressMonitor(Image *,const MagickProgressMonitor,void *), SetI
SetImageProgressMonitor(Image *,const MagickProgressMonitor,void *),
SetImageInfoProgressMonitor(ImageInfo *,const MagickProgressMonitor,void *);
有人能帮我吗?这是代码:
- (void)ExecuteCommand {
/*
command is an array which contains all the elements of the ImageMagick command.
example:
command (
convert,
imgSource.jpg,
"-blur",
"0x2.5",
"-paint",
5,
imgSaved.jpg
)
*/
ImageInfo *imageInfo = AcquireImageInfo();
int nbArgs = command.count;
char **argv = (char **)malloc((nbArgs + 1) * sizeof(char*));
for (unsigned i = 0; i < nbArgs; i++)
{
NSString *argString = [command objectAtIndex:i];
argv[i] = strdup([argString UTF8String]);
}
argv[nbArgs] = NULL;
progress_monitor_method = SetImageInfoProgressMonitor(imageInfo, &MonitorProgress, self);
ConvertImageCommand(imageInfo, nbArgs, argv, NULL, AcquireExceptionInfo());
if (argv != NULL)
{
for (unsigned index = 0; argv[index] != NULL; index++) {
free(argv[index]);
}
free(argv);
}
}
MagickBooleanType MonitorProgress(const char *text,const MagickOffsetType offset,const MagickSizeType extent,void *client_data) {
IM_TestViewController *IMVC = client_data;
float prog = offset;
float tot = extent;
NSNumber *value = [NSNumber numberWithFloat:prog/tot];
[IMVC performSelectorInBackground:@selector(updateProgressBar:) withObject:value] ;
NSLog(@"Action : %@ %lld on %lld", [NSString stringWithCString:text encoding:NSUTF8StringEncoding], offset, extent);
return MagickTrue;
}
- (void)updateProgressBar:(NSNumber *)value {
self.progressBar.progress = [value floatValue];
}
-(void)ExecuteCommand{
/*
命令是一个数组,其中包含ImageMagick命令的所有元素。
例子:
命令(
转换
imgSource.jpg,
“-模糊”,
“0x2.5”,
“-油漆”,
5.
imgSaved.jpg
)
*/
ImageInfo*ImageInfo=AcquireImageInfo();
int nbArgs=command.count;
char**argv=(char**)malloc((nbArgs+1)*sizeof(char*);
for(无符号i=0;i