Nsimage ImageNamed: بالنسبة إلى Mac Mini يعيد أيقونة صغيرة بدلاً من الدقة عالية
-
06-07-2019 - |
سؤال
عند استخدام NSImage
'س imageNamed:
طريقة للحصول على أيقونة الكمبيوتر الحالي ، إذا كنت أقوم بتشغيل Mac Mini ، فأنا أحصل على صورة منخفضة الدقة. إذا قمت بتشغيل نفس الرمز من جهاز MacBook الخاص بي ، فأنا أحصل على أيقونة عالية الدقة كما أتوقع.
قانون بلدي على النحو التالي:
NSImage *image;
image = [NSImage imageNamed:@"NSComputer"];
[image setSize: NSMakeSize(512,512)];
NSData * tiffData = [image TIFFRepresentation];
NSBitmapImageRep *bitmap = [NSBitmapImageRep imageRepWithData:tiffData];
data = [bitmap representationUsingType:NSPNGFileType properties:nil];
mime = @"image/png";
عندما أقوم بتشغيل ذلك على جهاز MacBook الخاص بي ، يعمل كل شيء بشكل رائع وأحصل على رمز 512 × 512 لجهاز الكمبيوتر الخاص بي. عندما أقوم بتشغيله على جهاز Mac Mini الخاص بي ، أحصل على أيقونة 32 × 32 تم رفعها إلى 512x512.
أي أفكار حول كيف يمكنني الحصول على النسخة عالية الدقة؟
المحلول
أعتقد أن الصورة تأتي من /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/
تم تسمية أيقونة Mac Mini com.apple.macmini.icns
. قد ترغب في التحقق مما إذا كان هذا الملف يحتوي على أيقونة 512 × 512 على جهازك (إنه يعمل على المنجم ، ويدير الثلج Leopard) ''
لأغراض تصحيح الأخطاء ، يجب عليك أيضًا إرسال إخراج -representations
إلى NSLog
للتحقق من أن الرمز لا يحتوي على إصدار 512 × 512.
يحرر:
ال 10.6 ملاحظات إصدار Appkit لديه الكثير على العلاقة المحدثة بين nsimage و cgimage.
على Snow Leopard ، يمكنك الحصول على صورة الدقة الكاملة عن طريق التحويل إلى cgimageref:
NSImage* image = [NSImage imageNamed:NSImageNameComputer];
NSRect imageRect = NSMakeRect(0, 0, 512, 512);
CGImageRef cgImage = [image CGImageForProposedRect:&imageRect context:nil hints:nil];
من هناك ، يمكنك إنشاء nsimage جديد من cgimageref ، أو استخدام واجهات برمجة تطبيقات cgimagedestination* لكتابة ملف PNG.