The Adobe docs for the new ATF SDK (http://www.adobe.com/devnet/flashruntimes/articles/atf-users-guide.html) state that the pvr2atf file is specifically designed to let you convert textures created with texturetool into ATF textures. I have a PNG texture (with transparency), and when I create an ATF with it directly, I get some odd artifacts around the edges of the non-transparent pixels. When I create a PVRTC texture with texturetool from the same source image, the preview generated by texture tool looks great. So, I was hoping I'd then be able to convert that into a clean ATF that I could then use on iOS in a Starling app.
However, when I use the texture created by this command:
texturetool -e PVRTC -o atlas0.pvrtc -p atlas0-preview.png -f PVR atlas0.png
pvr2atf complains:
Illegal pvrtc texture type.
(Hint 1: In PVRTexTool CL type needs to be OGLPVRTC4)
(Hint 2: In PVRTexTool UI select the 'OpenGL ES2.0' tab in the 'Encode Texture:' dialog and select 'PVRTC 4BPP')
Conversion failed!
I've tried a few different options to the texturetool, but have not managed to generate a single texture that pvr2atf doesn't have a problem with. Has anybody managed to do this? These tools are very new, and there's not a lot of info out there, aside from what Adobe has written (and in some cases their docs directly contradict the result of the tools, such as in the case of when transparency is supported).
I am downloading PVRTexTool now to see if I have better luck there, but I need this eventually to be automatible so needing a GUI tool would be a major bummer.
For starters download the Imagination PowerVR SDK from here
Dont use texturetool, it isnt updated as much as this tool which is from the developers of PowerVR:
In here you will get a GUI version of the texture packing tool called PVRTexTool, thats much easier to use. In here you can open your PNG and then manipulate it including the format the texture is set to. Click the box at the top with the 3 yellow arrows pointing down to see compression formats
It would appear you need to use PVRTCII 4bpp which defines a compressed texture 4 bits per pixel for OpenGLES 2.0. This also allows you to see all the other formats and have a play around if that format doesn't work.
Related
I have a ID3D11Texture2D and want to write it to disk using literally any picture format (png, bmp, jpeg, ...).
I have already tried to read the docs https://learn.microsoft.com/en-us/windows/win32/api/d3d11/nn-d3d11-id3d11texture2d, which are less than helpful, and i have found an NVIDIA tutorial of how to take individual ID3D11Texture2D and convert them into a video: https://github.com/NVIDIA/video-sdk-samples/tree/master/nvEncDXGIOutputDuplicationSample
However, I dont find anything how to simply write it to disk in any format. I'm sure I'm missing something obvious, any hint would be appreciated.
To experiment, I used https://github.com/NVIDIA/video-sdk-samples/tree/master/nvEncDXGIOutputDuplicationSample, set the frames to capture to 1, and try to write the ID3D11Texture2D to file before encoding to video.
I have a solution for exactly this in the ScreenGrab module which captures a texture (if not already in Map-supporting memory), and then writes it out as a picture using WIC. It handles some edge-cases like "typeless" resources and MSAA as well.
The 'standalone' version is on GitHub here as part of the DirectXTex package:
https://github.com/microsoft/DirectXTex/blob/main/ScreenGrab/ScreenGrab11.h
https://github.com/microsoft/DirectXTex/blob/main/ScreenGrab/ScreenGrab11.cpp
Documentation is here.
ScreenGrab is also included in the DirectX Tool Kit for DX11 and DX12. There's also a basic DX9 version in the DirectXTex package as well.
ScreenGrab can write to any file container supported by WIC. It also has buit-in support for writing DDS files directly without using WIC.
In addition to using ScreenGrab (which is intended as a light-weight screenshot solution), you can also use the DirectTex library to capture a texture and then save it to DDS, HDR, TGA, or any WIC-supported file format.
I want to extract bezier paths from a png like this.
sample image
potrace doesn't support reading PNG files natively. You'd need to convert PNG images to another supported format first. http://potrace.sourceforge.net/faq.html#formats
However potrace is licensed under the GPL so while it does compile for iOS you may not want to use it as part of an app. Is it possible to compile potrace for iOS? There is a non-GPL version of potrace available, but it isn't free.
Depending on the complexity of the PNG images you want to convert, you may get less than ideal results anyway.
If you update your question with more detail about what you are trying to achieve it might be possible to give a better answer.
I like to convert an .jpg or .png file to an .svg format that can be displayed in UIImageView. Is there a way to do this in Objective-C?
You shouldn't use SVG images in Xcode:
it is recommended that you use PNG or JPEG files for most images in your app. Image objects are optimized for reading and displaying both formats, and those formats offer better performance than most other image formats. Because the PNG format is lossless, it is especially recommended for the images you use in your app’s interface.
Also, there's an SVGKit that according to many devs is buggy so use it at your own risk.
SVG is an XML-based vector and in Xcode you can also use vectors but using a PDF format and follow this tutorial.
In a nutshell:
Generate PDFs With the #1x Asset (During compile time it will generate #2 and #3)
Set the Scale Factors to Single Vector:
Drag and Drop Your PDF Into the All, Universal Section
Refer to Your Image by Its Name, Like for any PNG File
[UIImage imageNamed:#”Home”]
Also, stackoverflow (perhaps) related answer
To convert PNG to SVG (Which is a very sensible and valid thing to do) you need an app or library called a "tracer". It will trace the outlines of shapes, gradients, etc and convert them into vector representations.
For simple cases, this is easy for a computer to do; for complex cases (e.g. gradients), this is a very hard AI / Computer-Vision problem and you'd need to spend $$$ on high-end coding solutions and/or find PhD-level research that solves the problem!
A free tracer that does a very good job is built-in to Inkscape (open-source) - google "inkscape trace" for tutorials on how to use it, and to generate a .svg file that you can use. This is a manual process.
To use this in-app, you need to find a tracing library for iOS. The libraries that Inkscape uses are all open-source, so you could try converting them to iOS - they're written in C, so it could be quite easy.
I optimized and put compressed images into Images.xcassets
When I build the package and look into the contents of it, I see that all of the images are modified by XCode (build tools etc..) and for example Default-568h#2x.png (218KB) becomes LaunchImage-568h#2x.png(455KB)
This makes it impossible for me to put optimized images.
What am I doing wrong here?
Your issues is most likely premultiplied alpha channel. I ran into this same issue when designing my game engine and it was relatively painless to fix.
Last I knew there is no option to disable premultiplied alpha channels for the Xcode bundle.However, Xcode comes bundled with a textureool which can be used at build time to format your images into another format that does not suffer this same optimization. Since my code focuses on sending texture data to OpenGL i used the powerVR format PVRTC. However, you're free to utilizes whatever format you like.
If you decide to go this route you can add a build target to your project which converts all png files into which ever format you prefer.
Is there a way to easily export layer styles, created in photoshop, to core graphics code? Maybe a photoshop plugin or a .psd parser for use in xcode. I imagine someone has made (or should make) a process to more easily facilitate the "from design, to code" process. The only thing I could find on google was Opacity which takes illustrator files and outputs core graphics code.
Or maybe a third party program similar to this which creates a familiar layer style interface and exports css code.
Update : Found this today. MooMaskedIconView
Found it : http://www.paintcodeapp.com/
If you just want to apply effects to an image, you can use Core Image, which comes with 48 filters. Currently there isn’t a way to build custom filters on the iOS platform, that's a drawback … But to get started I sugesst you to take a look at Ray Wenderlichs tutorial Beginning Core Image in iOS 5 Tutorial.
Another approach is using 3rd party libs. For example ImageMagick, which has a huge feature set :)
I use Save for Web & Devices. Png-24 keep the opacity but there is no facilities for layers. When you save, the LNG becomes what you are looking at. So it's easy to keep several layers in the same Photoshop file.