gpt4 book ai didi

iOS:当附加大图像时,邮件何时要求通过缩放图像来减小邮件大小?

转载 作者:行者123 更新时间:2023-11-29 13:13:04 26 4
gpt4 key购买 nike

在我的 iOS 应用程序中,我需要用户能够发送带有 GIF 图像附件的电子邮件。我通过使用 MFMailComposeViewController 实现了这一点。如果 GIF 图像的文件大小很小,则一切正常。但是,如果图像尺寸较大,iOS 会要求缩小图像尺寸。如果用户同意缩小图像尺寸,GIF 动画就没有了。实际上,这与此处提出的问题相同:Preventing MFMailComposeViewController from scaling animated GIFs

我的理解是没有办法避免 iOS 要求减小尺寸。因此,我想的解决方案如下:我将在附加之前预压缩并生成一个文件大小减小的新 gif,以便它始终足够小。

所以我的问题是:是否有保证不会导致 iOS 要求减小图像大小的图像文件大小?例如,是否有类似“如果附加图像文件小于 X KB,邮件将永远不会要求减小图像大小”之类的内容,X 是什么?

最佳答案

我有一个阈值问题的答案和一个方法来缩小图像并可靠地避免 Apple 查询是否要缩小图像大小。

一些背景:

在我的应用程序中,我为用户提供了在发送电子邮件之前自动将他们的图像缩小到 1024x768 的选项,以避免 Apple 的“你想缩小你的图像吗?”查询。

很长一段时间,我认为这个除垢量就足够了。但是我发现,如果他们的图片有足够的细节,那么即使是 1024x768,它仍然可以触发 Apple 的查询。

所以,下面的代码是我如何处理这个问题的。请注意,如果 getMinImgSizFlag 为 TRUE,我已经在其他地方自动将图像缩小为 1024x768。

//...convert the UIImage into NSData, as the email controller requires, using
// a default JPG compression value of 90%.

float jpgCompression = 0.9f;

imageAsNSData = UIImageJPEGRepresentation( [self camImage], jpgCompression );

if ( [gDB getMinImgSizFlag] == TRUE )
{
//...if we are here, the user has opted to pre emptively scale their
// image down to 1024x768 to avoid Apple's 'scale the image down?'
// query.
//
// if so, then we will do a bit more testing because even with
// the image scaled down, if it has a lot of fine detail, it may
// still exceed a critical size threashold and trigger the query.
//
// it's been empirically determined that the critical size threashold
// falls between 391K and 394K bytes.
//
// if we determine that the compressed image, at the default JPG
// compression, is still larger than the critical size threashold,
// then we will begin looping and increasing the JPG compression
// until the image size drops below 380K.
//
// the aproximately 10K between our limit, 380K, and Apple's
// critical size threashold allows for the possibility that Apple
// may be including the contribution of the E-Mail's text size into
// its threashold calculations.

while ( [imageAsNSData length] > 380000 )
{
jpgCompression -= 0.05f;
imageAsNSData = UIImageJPEGRepresentation( [self camImage], jpgCompression );
}
}

就是这样。我已经测试了这段代码,它可靠地允许我避免 Apple 的你想在通过电子邮件发送查询之前缩小你的图像。

关于iOS:当附加大图像时,邮件何时要求通过缩放图像来减小邮件大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16702359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com