Tag: png

iOS和libpng上的PNG优化

我们在iOS应用程序中使用了一些旧代码,这些代码使用纹理图集和OpenGL渲染了简单的3D图像。 整个应用程序是使用最新的Swift版本编写的,但是使用OpenGL的部分是在Objective-C中编写的。 我不了解Objective-C,但这是有很好的理由-用这种语言编写的代码必须是我见过的可读性最低的代码。 幸运的是,一年多来我不需要接触该代码。 本周,企业提出了更新3D图像外观的要求。 我获得了PNG格式的新纹理地图集,我认为这将是在公园里散步-我仍然不需要触摸代码,我将一个地图集交换为另一个。 旧的纹理地图集文件是常规的PNG文件,但是由于某些未知原因(对我而言),它们具有怪异的扩展名。 在内部,文件是由libpng读取的,因此没有理由使用不同的扩展名。 我一直试图了解(可能的更改,如果可以使事情变得更容易)对我而言尚不清楚,因此我添加了具有常规PNG扩展名的新地图集文件,而不是将其重命名为旧版代码中使用的自定义文件。 这就是我遇到最初根本无法理解的问题的方式。 libpng无法读取抱怨CgBI chunk的新文件。 问题在于Xcode优化了默认情况下不属于Assets的所有PNG文件,并将它们转换为Apple的非标准PNG格式-CgBI(http://iphonedevwiki.net/index.php/CgBI_file_format)。 这种格式增加了libpng无法识别的额外标头。 这解释了为什么我之前的某人决定使用一些奇怪的自定义扩展名-以避免Xcode对文件运行优化。 这是解决问题的一种方法,但是还有另一种方法。 将任何PNG文件添加到Assets之外的项目后,“ Build Settings就会出现一组新的选项: 以上是默认状态。 为了使libpng可以正常工作,我必须将两个选项都设置为no 。 然后,它开始运行良好。 一些有趣的链接: https://developer.apple.com/library/archive/qa/qa1681/_index.html https://imageoptim.com/xcode.html

缩小您的.IPA尺寸:EP。 2 —减小PNG图像的大小

และากตอนที่แล้วที่เราวิเคราะห์กันว่าแอพเรามันใหญ่เพราะอะไรและScanหา图像资源ที่เราไม่ได้ใช้แล้วเพื่อลบอออกไปจากProjectของเรามันก็คงจะพอลดขนาดของแอพเราไปได้บ้างไม่มาก ก็น้อยจากการลบสิ่งไม่จำเป็นออกไป แล้วสิ่งจำเป็นล่ะ? เราจะสามารถทำอะไรกับมันได้อีกมั้ย? Caseอ案例研究ผมเจาบอกว่า Tweetbot for iPad สามารสนาดแ​​อพลงได้ เกินกว่าครึ่ง จากการทำลดขนาดรูปภาพที่ใช้ในแอแแค่นั้นยังไม่พอ ความเร็วในกน็วใารแสดงผลรูปภาพยูปภร็วขึ้นอีกตั้ง2.5เท่า !! อ่านแล้วผมนี่ตาลุกวาวอะไรจะดีขนาดนั้นต้องลองซักหน่อยแล้ว ูู่่ตัวคืููููููููููู่่่่่่่่่่่Al Optim Optim Optim Optim Optim Optim Optim Optim Optim ImageAlphaเป็นเครื่องมือที่จะแปลงPNG NGองเราให้มีขนาดเล็กลงจากที่เราใช้PNG PNG8 + Alphaอสั้ายสั้นๆก็คือๆก็คือยู่ในรูปภาพให้น้อยลงจาก24 bit(16.7ล้านสี)เหลือ แค่256ังคงคุณสมบัติแต่แต่ังคงคุณสมบัติNG NG NG NGส่วส่วส่วNGส่วNG NGส่ว256 NG พคุณดีไซน์ให้เป็นลั ษณะนั้นนะ)เราโหลดแอพมาปรับๆดูก่อนก็ได้ว่าแปลงเป็น8位แล้วมันพังมั้ย? ถ้าไม่ก็ลุยต่อเลย Alรูปที่เราทำมันก็เยอะเหลือะเหลืนซึ่งมีานั่งทีละรูปไม่เสร็จงานกันพอดีเบื้องหลังการทำงานของImageAlphaคือไลบรารี่pngquantซึ่งมี命令行实用工具 ถราสามารถconvertทีเดียวทั้งAsset.xcassetไฟล์ได้เลย Package pngquantมันอยู่ใน二进制ของImageAlphaนั่นแหละคลิกขวากด显示程序包内容แล้วดูใน Contents/MacOS/ จะเจอlib pngquantหรือเราจะติดตั้งจากhomebrewเอาเลยก็ได้เช่นกันด้วยคำสั่ง brew install pngquant pngquant terminalากนั้นใน终端cd path/to/your/.xcassets และคำสั่ง find *.imageset/*.png […]

libpng错误:读取错误

我有一些PNG图像。 我打开它。 比我把它保存到文件。 而当我尝试打开保存的图像,我有这个问题。 libpng错误:读取 png_read_rows 错误 这是写代码: png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); png_infop info_ptr = png_create_info_struct(png_ptr); //created png struct setjmp(png_jmpbuf(png_ptr)) //signed png_init_io(png_ptr, file); png_set_IHDR(png_ptr, info_ptr, width, height, 8, PNG_COLOR_TYPE_RGBA, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); //set header unsigned char * buffer = (unsigned char*)malloc(4 *width * height); // created buffer unsigned char ** row_pointers = […]

在UIImage并列在视网膜显示的奇怪arctefact

我的应用程序中有一个很奇怪的问题,只发生在Retina显示屏上,而不是模拟器 。 我开发了一组embedded式openstreetmaps图块(地图块)的应用程序。 在每个应用程序中,我有很多地图(256像素/ 256像素),我显示在一个UIScrollView。 它非常适用于非视网膜设备和视网膜模拟器 。 问题在于,每个瓦片都以最后一行像素呈现为随机颜色(大部分时间是黑色) 为了说明,我使用设备和模拟器制作了同一地点的屏幕截图。 他们被分组在一张照片中: 你可以看到,黑色的像素线不是在瓷砖外,而是在瓷砖的最后一个像素线 (两个屏幕没有变化) 更奇怪的是:有时候,在瓦片中颜色变化很小的时候,像素线是随机元素的颜色,有时根本不会出现! 在这里,蓝线,灰线,黑线….. 编辑: 我简化了很多代码,并且只有这个2-tiles加载的问题: int W = 256; int H = 256; NSString * map1 = [[NSBundle mainBundle] pathForResource:@"test1.png" ofType:nil]; NSString * map2 = [[NSBundle mainBundle] pathForResource:@"test2.png" ofType:nil]; UIImageView * pieceOfMap1 = [[UIImageView alloc] initWithFrame:CGRectMake(0, H*0, W, H)]; UIImageView * pieceOfMap2 = [[UIImageView […]

该包不包含iMessage图标。 iMessage应用程序图标必须是.png格式的120×90像素

我们在app store提交应用时遇到了错误/问题。 请检查错误屏幕截图: Error screenshotvalidation时出现此错误。 以下是我使用iMessage应用程序图标图像的i消息图标及其信息 错误消息是“该包不包含iMessage图标。iMessage应用程序图标必须是.png格式的120×90像素” 这是一个Xcode问题或图像的问题?

构build和存档后,PNG图像变为空白/损坏

我在今天遇到了一个奇怪的问题,在我的应用程序中重命名了几个图像,并确保它们在设备以及模拟器上工作之后,我使用“构build和存档”(Build and Archive),就像我总是build立我的应用程序以分发给testing人员一样。 不过,这次我收到了一些testing人员的奇怪报告,说这些图片已经不存在了,于是我把这个版本安装在手机上,而且我惊奇地发现他们已经不在了。 试图做一个干净的,并再次build立,但没有改变。 当我打开.app文件时,我可以清楚地看到很多但不是全部的图像都变成了空白,它们看起来与磁盘上的物理尺寸相同,而且它们看起来也有正确的高度,空间来预览它们,但我不能用photoshop打开它们(文件格式模块不能parsing文件)。 这非常令人困惑,因为我必须尽快为testing做好准备,所以我非常感谢在这个问题上的一些帮助。

pngcrush:在Linux上uncrush?

苹果的iOS SDK使用pngcrush的修改版本来转换iOS包中的png文件。 他们的版本也可以恢复更改(使用“-revert-iphone-optimizations”开关),但原始版本不能。 有没有一个可以在Linux上运行的工具,并恢复iphone的优化? 谢谢。

对于iOS上的所有图像文件,PNG是否优于JPEG?

Xcode优化PNG图像,使其加载速度更快,但这也build议其他图像资源不是button和UI(例如照片)? 或者是一个标准的UI图像为PNG和“照片”为JPEG? 这里最好的做法是什么?

iOS的Monotouch中透明的PNG

我有一个问题,我在这里发布之前一直在寻找解决scheme的月份。 问题是关于Monotouch中的透明PNG文件: 我正在尝试在上下文中加载透明的PNG ,以读取和写入像素颜色 。 我正在使用下面的代码,它与非透明的PNG完美配合。 (我也包括其他几个尝试获得正确结果的尝试) 透明PNG的问题似乎是,我必须在预乘alpha 字符 ( CGImageAlphaInfo.PremultipliedLast )的上下文中加载图像。 这会导致RGB值在上下文中加载时从其原始值更改。 我试图用CGImageAlphaInfo.Last创build一个上下文(这在理论上是正确的),但是我得到一个exception(不可接受的参数组合)。 我想用CoreImage尝试,但这会限制我们的用户到iOS 5或更高版本,我决定这是不能接受的。 我迫切需要find一种方法来获取和设置透明的PNG像素,因为我正在创build一个需要处理透明PNG的跨平台软件(iPhone,iPad,Mac,使用MonoMac和Windows)。 任何帮助将不胜感激。 谢谢! using System; using System.Collections.Generic; using System.Linq; using MonoTouch.Foundation; using MonoTouch.UIKit; using System.Drawing; using MonoTouch.CoreGraphics; using System.Runtime.InteropServices; using MonoTouch.CoreImage; namespace TestPNG { // The UIApplicationDelegate for the application. This class is responsible for launching the // User […]

什么是最适合iOS显示的PNG内部格式可以从非苹果平台生成?

build议使用PNG,这是iOS最快的格式。 不过PNG本身有几个内部的子格式。 Alpha通道,字节sorting,颜色深度等 我读转换正常的PNG到iPhone优化格式,但Q / A即将图像捆绑。 现在我从服务器生成了许多针对iOS优化的缩略图。 我不能在服务器上使用Apple的框架。 然而,次优格式也是足够的。 我想听听意见。