/ / क्या जेनरेट किए गए जीआईएफ के लिए लापरवाही संपीड़न करने का कोई तरीका है? - आईओएस, जीआईएफ, लापरवाही-संपीड़न

जेनरेट किए गए जीआईएफ के लिए लापरवाही संपीड़न करने का कोई तरीका है? - आईओएस, जीआईएफ, लापरवाही-संपीड़न

हम जीआईएफ उत्पन्न करने के लिए निम्नलिखित कोड का उपयोग कर रहे हैंजेपीईजी छवियों के एक सेट से फ़ाइल, लापरवाह संपीड़न करने की सेटिंग के लिए, यह एक छोटी आकार की फ़ाइल उत्पन्न नहीं करता है। क्या हम यहां सही काम कर रहे हैं?

CGImageDestinationRef imageDestination = CGImageDestinationCreateWithURL((CFURLRef)pathUrl, CFSTR("com.compuserve.gif"), images.count, NULL);

// image/frame level properties
NSDictionary *imageProperties = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithFloat:delayTime], (NSString *)kCGImagePropertyGIFDelayTime,
nil];
NSDictionary *properties = [NSDictionary dictionaryWithObjectsAndKeys:
imageProperties, (NSString *)kCGImagePropertyGIFDictionary,
nil];

for (UIImage *image in [images objectEnumerator]) {
CGImageDestinationAddImage(imageDestination, image.CGImage, (CFDictionaryRef)properties);
}

// gif level properties
NSDictionary *gifProperties = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:0], (NSString *)kCGImagePropertyGIFLoopCount,
[NSNumber numberWithInt:1.0], kCGImageDestinationLossyCompressionQuality,
nil];
properties = [NSDictionary dictionaryWithObjectsAndKeys:
gifProperties, (NSString *)kCGImagePropertyGIFDictionary,
nil];
CGImageDestinationSetProperties(imageDestination, (CFDictionaryRef)properties);
CGImageDestinationFinalize(imageDestination);
CFRelease(imageDestination);

उत्तर:

उत्तर № 1 के लिए 1

जीआईएफ छवि प्रारूप हानि रहित संपीड़न है। हालांकि आप एक (हानिकारक) संपीड़ित प्रारूप को संपीड़ित कर रहे हैं। फ़ाइल का आकार बढ़ सकता है।


जवाब के लिए 2 № 2

जीआईएफ का समर्थन नहीं करता है kCGImageDestinationLossyCompressionQuality संपत्ति। जहां तक ​​मैं कह सकता हूं, आईओएस पर gifs को संपीड़ित करने के लिए समर्थन में कोई निर्मित नहीं है - मैं काम करने के लिए रंगीन नक्शा प्राप्त करने में सक्षम नहीं हूं।

const CFStringRef kCGImagePropertyGIFLoopCount;
const CFStringRef kCGImagePropertyGIFDelayTime;
const CFStringRef kCGImagePropertyGIFImageColorMap;
const CFStringRef kCGImagePropertyGIFHasGlobalColorMap;
const CFStringRef kCGImagePropertyGIFUnclampedDelayTime;

संदर्भ: https://developer.apple.com/library/ios/documentation/graphicsimaging/Reference/CGImageProperties_Reference/Reference/reference.html#//apple_ref/doc/constant_group/GIF_Dictionary_Keys


जवाब के लिए 0 № 3

जेपीईजी छवियों में बहुत समान हैं लेकिन नहींसमान पिक्सेल, जो संकुचित करने के लिए लापरवाही संपीड़न योजनाओं के लिए बहुत कठिन हैं। बेहतर संपीड़न प्राप्त करने के लिए आपको पहले रंगों को मापना होगा। छवि संपीड़ित करने के लिए जानकारी खोने की हिट लेने के बाद GIF छवियां हानिकारक होंगी।