我正在制作一个应用程序,可以轻松扫描到多页pdf文件。该项目位于GitHub,以防您想要查看所有项目代码。
我遇到黑白扫描问题。白。
这是按下按钮开始扫描时调用的方法。
- (IBAction)scan:(id)sender {
//Get the selected scanner and it's functional unit
ICScannerDevice *scanner = [self selectedScanner];
ICScannerFunctionalUnit *unit = [scanner selectedFunctionalUnit];
//If there is no scan or overviewscan in progress
if (![unit overviewScanInProgress] && ![unit scanInProgress]) {
//Setup the functional unit and start the scan
[unit setScanArea:[self scanArea]];
[unit setResolution:[[unit supportedResolutions] indexGreaterThanOrEqualToIndex:[[resolutionPopUpButton selectedItem] tag]]];
[unit setBitDepth:ICScannerBitDepth8Bits];
[unit setMeasurementUnit:ICScannerMeasurementUnitCentimeters];
[unit setThresholdForBlackAndWhiteScanning:0];
[unit setUsesThresholdForBlackAndWhiteScanning:YES];
[unit setPixelDataType:[kindSegmentedControl selectedSegment]];
[scanner requestScan];
} else {
//Cancel the ongoing scan
[scanner cancelScan];
}
}
我将pixelDataType
设置为我从NSSegmentedControl
得到的整数。选择第一个段时,这将返回0,这与ICScannerPixelDataTypeBW
相同。
然而,尽管选择了第二个和第三个片段(ICScannerPixelDataTypeGray
和ICScannerPixelDataTypeRGB
)时一切正常,但扫描器设置为扫描黑色&白。
ImageCaptureCore
的扫描部分提供的文档非常少,但我发现这些属性描述了黑色&的阈值。 this website上的白色扫描,但它们都不适合我。
我知道这是ImageCaptureCore API的一部分,很多人并没有经常使用它,但我真的希望有人知道,或者至少可以找到解决问题的方法。
修改
我在我的实现中添加了- (void)device:(ICDevice *)device didEncounterError:(NSError *)error
并记录了错误,即:
2014-02-01 21:55:16.260 Scanner[4131:903] Error Domain=com.apple.ImageCaptureCore Code=-9933 UserInfo=0x1005763f0 "An error occurred during scanning."
答案 0 :(得分:3)
从另一个答案中略微提示(有意或无意),我自己想出了事情。
您需要做的是将bitDepth
设置为ICScannerBitDepth1Bit
,因为您尝试扫描的是每像素1位图像。
这反过来禁用灰度或rgb扫描。
由于我不能将赏金奖励给我自己的问题,我会将赏金奖励给我得到提示的问题。
答案 1 :(得分:2)
您可以在ICCommonConstants.h中找到ImageCaptureCore错误代码。
您提到的错误是
ICReturnReceivedUnsolicitedScannerErrorInfo = -9933
也许你的扫描仪根本不支持Black&白色?由于灰度有效,你甚至想使用BW吗?
来自标题:
/*!
@enum ICScannerPixelDataType
@abstract Pixel data types. Corresponds to "ICAP_PIXELTYPE" of the TWAIN Specification.
@constant ICScannerPixelDataTypeBW Monochrome 1 bit pixel image.
@constant ICScannerPixelDataTypeGray 8 bit pixel Gray color space.
@constant ICScannerPixelDataTypeRGB Color image RGB color space.
@constant ICScannerPixelDataTypePalette Indexed Color image.
@constant ICScannerPixelDataTypeCMY Color image in CMY color space.
@constant ICScannerPixelDataTypeCMYK Color image in CMYK color space.
@constant ICScannerPixelDataTypeYUV Color image in YUV color space.
@constant ICScannerPixelDataTypeYUVK Color image in YUVK color space.
@constant ICScannerPixelDataTypeCIEXYZ Color image in CIEXYZ color space.
*/
enum
{
ICScannerPixelDataTypeBW = 0,
ICScannerPixelDataTypeGray = 1,
ICScannerPixelDataTypeRGB = 2,
ICScannerPixelDataTypePalette = 3,
ICScannerPixelDataTypeCMY = 4,
ICScannerPixelDataTypeCMYK = 5,
ICScannerPixelDataTypeYUV = 6,
ICScannerPixelDataTypeYUVK = 7,
ICScannerPixelDataTypeCIEXYZ = 8
};
typedef NSUInteger ICScannerPixelDataType;
你真的想支持每像素1位图像吗?