Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
I'm not sure if this is the best forum for this, because it's not a programming question per se, but here goes.
I am the developer for an iOS application, and we contracted the design out to a third-party. They delivered to us a massive PhotoShop file with all of the the individual pieces of artwork done on individual layers, at double resolution. To get the artwork into XCode, my workflow is as follows:
Show only the layers containing a particular unit of artwork
Select all
Copy Merged
Create New image (fortunately, the dimensions are taken care of automatically)
Paste
Deselect pasted layer and delete Background, to preserve transparency
Save image as x.psd
Save copy as x#2x.png
Set image size to 50% of original dimensions
Save copy as x.png
Discard changes
This app is pretty large, so it's quite tedious to do this process for every little image. I'm not very Photoshop savvy, so I'm wondering if there is a better way. It seems to me that it should be easy enough to combine steps 3-11 into one macro or script or something. The only thing that changes in each iteration over these steps is the output name. Any suggestions?
Normal workflow is exactly as you described. You can write a Photoshop script to do the layer exporting and Apple provides an Automator tool that will allow you to resize those graphics from 2x down 50%. Great tutorial here. This can help get your graphics to scale quickly.
There are solutions to automate what your trying to accomplish. This video tutorial allows you to take your PSD or PNG and port it into an Xcode with all of the layers properly placed in a view for you, create view controllers, and segues.
Disclaimer - I am associated with the JUMPSTART Platform as mentioned in the video.
You can script Photoshop with Javascript and I've written scripts in the past to perform similar series of steps, it wasn't too hard to figure out even for someone like me who'd never written any Javascript before. Photoshop also has 'Actions' which are like macros and you can probably do something simple like this with Actions as well but it's not something I've personally tried. Check out the Adobe docs on scripting Photshop: Adobe Photoshop Scripting.
Related
Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 1 year ago.
Improve this question
I'm trying to create a mask out of a custom shape. I tried it with image masking and the result is given below. While my desire result is not exactly.
Using this Mask Image
The visual effect that I want to have:
Can anyone provide some hints on how can I achieve my desire effect.
What you have achieved via masking is working correctly. Masking works on alpha channel, transparent area vs visible area and images you posted in your question show exactly that.
Masking won't be enough for the effect you want to achieve. You need to experiment with CIFilter api.
Check out cifilter.io that shows a few examples of how these are supposed to look like. You might want to check out the source code for the same.
If you run this iOS project in Xcode, it provides a very easy way to browse and choose which effect is the closest to what you want to achieve.
Good luck!
This question already has an answer here:
iOS - which is the better option to put images? Core Graphics(PaintCode App) vs Image files(png)
(1 answer)
Closed 6 years ago.
I am working on an app which has lot of images and graphics. There are instances where I need to re-use the icons, images etc to change color using the image rendering capability of Xcode. Inspite all of my best efforts the size of my app huge. I also looked into the PaintCode approach to move the icon images from assets to code. But I am wondering will it be good idea to move the efforts from compile time to run time? Will it not burden the app too mutch and affect the application's performance? With PaintCode gaining reputation in the market I am sure this would have been discussed somewhere.
I use a PaintCode approach in my project and performance is good. But I don't have many icons on the screen and do not draw many images at the same time. You could improve performance if needed using cache for generated images (Don't forget to clean it when didReceiveMemoryWarning calls).
If you have many images which depends of screen resolution you could also try to use.
It's not an either-or thing. You can generate an image in code and then save it for later use. (For example, you could generate it and save the resulting image to disk, where it will take up no app memory unless and until it is actually needed.)
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
I'm stuck on a problem and needed some help or guide for a possible solution.
Basically in my application there will be a map with several zones.
The user can select any of these areas, at that time this area is filled with a color.
Imagine a map like this one, so i need to be able to change the color of only one country.
Something like what happens in the books of paintings (https://itunes.apple.com/pt/app/colorfly-best-coloring-book/id1020187921?mt=8), or Paint Bucket command in the Photoshop .
Any idea how to get something like this on iOS ?
Thanks in advance
The paint bucket technique you're looking for is a set of graphics algorithms usually called "flood fill". There are different approaches to the implementation depending on the circumstances and performance needs. (There is more at that wikipedia link.)
I have no experience with it, but here is a library from GitHub that purports to implement this for iOS given a UIImage object: https://github.com/Chintan-Dave/UIImageScanlineFloodfill
Re: your question about doing this without user touch: yes, you'll want to keep a map of countries to (x,y) points so you can re-flood countries when required. That said, the intricacies of the county borders might make an algorithmic fill inexact without more careful normalization of the original source. If your overall map only contains a small set of possible states, there are other ways of achieving this goal, like keeping a complete set of possible images (created in ie Photoshop) and switching them out, or keeping a set of per-country "overlay" images that you swap in as needed. (But if the flood fill is accurate on that source image, and performant for your needs, then great.)
Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 8 years ago.
Improve this question
I´m building a game that reads a bidimensional array so that it creates the map, but the walls are all separated from the corners and floors, each wall, each corner and each floor is an individual image, and this is consuming a lot of CPU, but I really want to create a random feeling of the map, and that´s why I´m using an image for each corner and wall.
I was thinking that maybe I could generate a texture built by merging 2 or more different textures, to enhance performance.
Does anyone know how that I could do that? Or maybe another solution? Does converting the images to PVR would make any difference?
Thanks
For starters, you should use a texture atlas, created with a tool like TexturePacker, grouping as much of your 'images' onto a single atlas. Basically load it once and create as many sprites from it as you want without having to reload. Using PVR will speed up the load, and benefit your bundle size.
Secondly, especially for the map background, you should use a CCSpriteBatchNode that you init with the above sprite sheet. Then, when you create a tile, just create the sprite and add it to the batch node. Add the batch node to your scene. The benefit of this is that regardless of the number of sprites (tiles) contained in the batch node, this will all be drawn in a single GL call. Now, that is where you will gain the most benefit from a performance standpoint.
Finally, dont rely on the FPS information when running with the simulator. The simulator does not make use of the host's GPU, and its performance is well (much) below what you get on a device. So before posting a question about performance, make certain you measure on a device.
Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
I am using Inkscape and I know how to use transparency within the image, but I am annoyed that the background of the workspace in Inkscape is white. I searched through a lot of settings, but had no luck.
How do I get the workspace checkered like in GIMP?
The white workspace is really bothersome if you design something in white
You can change the background color in Inkscape by changing the document properties (in the File menu).
In particular, you can check 'Checkerboard background' to show the checkerboard if the background is set to transparent.
A quite ugly solution is to design your own checker background and have it as locked bottom layer :) Im doing something similar when im fiddling around with iOS icons or items that will be on a background.
Also as Juve mention you could try out the grids property.
First of all, a hint on transparency. If you export images with transparency for example to PDF (for printing), they are converted to bitmaps inside the PDF or produce unwanted results. Export to non-vector formats should be fine. I suggest to avoid transparency, usually there is a way to mimic transparency, e.g., by just using a light gray for shadows. Also don't use blur effects; similar problems with PDF export.
Now to the checkboard:
It's not possible, one workaround would be to add full page sized box and choose black checker board as fill. Put this box on a separate layer and lock the layer. You might also lighten that box up using one of the filters. Unfortunately this board won't adapt when zooming.
Maybe not the solution, but a related option would be the grid (press #). This is not behind your drawing but in front. It can help you with positioning. Maybe you were looking for this?