Xcode: Vector images from PDF bad quality

℡╲_俬逩灬. 提交于 2020-12-30 04:54:41

问题


for my iOS Swift project I use vectorized pdf files from which Xcode renders the @1x, @2x, @3x images.

When I compare the quality of the images generated from PDF with normal PNG images of the same size I see a big difference in the quality between them. Theoretically the quality of the first row and the third row in the following picture should be the same, because a 108x80 image should be rendered and used from my 54x40 PDF on my iPhone 6 with a normal retina display. Unfortunately the quality is far from equal.

Where do these differences come from and maybe how can I increase the quality of the generated images?


回答1:


I would set the Preserve Vector Data flag on the asset here:

This will make it render as a pdf and scale properly.




回答2:


The PDF should be saved at 1x resolution, Xcode will take that file and rasterize it generating the @1x, @2x and @3x bitmap versions for you.

In your case 3 PNGs with the following dimensions will be generated from your PDF:

  • icon.png (54x40px)
  • icon@2x.png (108x80px)
  • icon@3x.png (162x120px)

From the screenshot you've posted it doesn't appear that the UIImageView in the cell has a size that matches the icon, therefore you get the blur. It's important to understand that the vector image won't be used as such, but will be always rasterized.

Try to save the PDF with the resolution of the UIImageView (100x82px as per your comment) and check again the result.




回答3:


Steps for set a vector image in UIImage :

1 - Convert your svg image to pdf format

2 - Add pdf image to your assets

3 - Select your image and from attribute inspector tab (1.check Preserve Vector Data AND 2.set Scales type in Single Scale)

4 (very important) - Set image name in code and not in storyboard

imgVec.image = UIImage.init(named: "yourImageName")


来源:https://stackoverflow.com/questions/33612820/xcode-vector-images-from-pdf-bad-quality

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!