SVG background image with raster parts - css

I'm having a strange problem with using an SVG as a background image. Basically I have an image with mostly vector sprites on it with the exception of a couple of raster parts.
The problem is that in Safari (seems fine everywhere else) the raster parts are not displayed at all.
Does anyone know if there is a known problem with what I'm trying to do here? Is it not advisable to mix vector with raster? I'm more curious than anything because I can easily just move the raster parts into a separate image but it's just annoying that it works everywhere except Safari.
One of the images in question (Pin is vector, map is raster. Pin displays fine, map not visible):
Thanks,
Andy

This is an interesting question Andy. Is it possible for you to vectorize the raster areas? ( trace in Illustrator for example ) If not, my answer would be to use a sprite sheet for svg's and one for the raster images, png file...

Related

Render 2D text in Autodesk Forge without aliasing or blurring

Turns out I’m working with the Autodesk Forge viewer and Three.js, trying to render 2D text that can be interacted with (specifically select, rotate, and move).
To do this I am working with meshes (using MeshBasicMaterial, Mesh and TextGeometry) but it turns out that the text does not look perfectly sharp, it presents aliasing and I found that according to the API reference, the antialiasing is not applicable to 2d.
Here are some examples of the problem, as you can see, the more I move away from the plane, the worse the text looks (and even up close it doesn't look perfect):
I have tried to make a test representing the text with a Sprite (despite the fact that it would mean having to change the entire implementation already made with meshes of other functionalities) but apart from the fact that I cannot see it, I have seen example images and they do not appear either well: aliasing is visible from a distance and it looks really blurry up close. Here some examples:
Is there a way to correct this problem or is this the most I can get in 2D? I've tried searching for information on this but can't find anything helpful. And what has puzzled me the most has been realizing that antialiasing was not applicable in the case of 2d, like making it clear that nothing can be done to fix it.
I would be very grateful if you could solve my doubts, thank you very much in advance for your help.
An easier alternative, is to just use a higher pixel ratio for the renderer...
window.devicePixelRatio=2;
viewer.resize();
For example, using the custom geometry text, from Joao's demo, you can see the same aliasing issue at DPR=0.5 and DPR=1.0 ...
https://joaomartins-forge.github.io/textgeometry-sample/
But when I set the DPR=2.0, the text looks clean. The trade off is rendering performance, but your 2D drawings may be simple enough that it won't matter. You can use a 'mouse up' camera settle trick, to switch between DPR of 1 and 2, if you want a better UX experience.
There are a few ways to solve this aliasing issue for 2D (and 3D text).
The way I would recommend for your use case, is to use DIV elements (THREE.CSS3DRenderer), instead of text converted into three.js tessellated triangle geometry, as shown in this blog post:
https://forge.autodesk.com/blog/how-do-you-add-labels-forge-viewer
You can find out more information about THREE.CSS3DRenderer here:
https://threejs.org/docs/#examples/en/renderers/CSS3DRenderer
and an Example here: https://threejs.org/examples/#css3d_periodictable
Using CSS3DRenderer instead of CSS2DRenderer, means you will get the correct scaling (and rotation) of the div element as you zoom into your 2D drawing and the mathematics inside the calculation for the matrix transform has less edge-cases.
Once you are using DIV elements for your text, you will notice that the text is sharper and has no aliasing issues. That's because it is not being rasterized by the webGL pipeline, but by the SKIA library used by chrome/firefox/opera/etc for rasterizing text.
There is one final option, that uses signed-distance fields, but it's probably overkill for what you need.
Let me know if you want some example code.

How do I import SVG to Illustrator with CSS without errors?

I have created 20 webpages full of charts for a client. They want to print them as part of a publication so I am needing to turn SVG into EPS.
I've imported a large d3-generated SVG into Illustrator. The CSS is inline so most of the formatting has come through (thanks to this answer: Can I turn SVG and external CSS into EPS?). However there are two problems. One is that three out of four x-axes are replaced by a thick black line. The other is that some of the data (three lines on the bottom right chart) are completely missing. Does anyone have any clues as to what is wrong?
I have looked through the CSS in the hope of finding something that favours one particular axis or tick but can't see anything. I can't share the SVG or page because it's driven by client data, which is confidential.
Grateful for any help
Emma
Original SVG:
New Illustrator EPS:
In case anyone else has the same problem, I thought I'd post how I worked this out. The problem was CSS-related. Illustrator renders CSS differently, and applies slightly different rules to my text editor. In particular:
class names containing underscores are ignored;
font-size using vw are ignored;
where two opposing CSS rules apply, it seems the first rule is taken (haven't tested this properly)
CDATA declarations have to be within the svg tags
Sometimes the path to the element has to be spelled out far more clearly than a browser would require
A bit late to the party but I noticed such artifacts as well with Illustrator. If you open the SVG in any other browser it works fine. My solution was to use InkScape and then re-save the SVG files. After this Illustrator handles the SVG well.
This isn't exactly an answer to your question, but if you're only looking for an image that's of a high enough resolution to print, and don't necessarily care about it being vector vs. raster graphics, you can always use a high-resolution screen (if you have a 4K/5K screen laying around, use that, but an iPad may do the trick too), zoom in so that each SVG chart takes up as much of the screen as possible, then take a screenshot. If you're doing an extremely large high-quality print of just the chart, it may not work, but as long as it's a smaller piece of a larger document, you'll likely get a large enough image that it being raster graphics won't affect the quality of the printing.
This approach certainly has its disadvantages, but it's relatively quick, simple, and gets the job done.
EDIT: It looks like printing to a PDF will also preserve SVG graphics, and (at least on my computer) there doesn't appear to be any differences between the two images. Once it's in PDF, you'll be able to import into Illustrator pretty easily, and extract the actual SVG graphics from there.

illustrator object scaling issue

I'm having an issue with a certain object, when I scale it down - anchor points appear to be moving about - and the logo (object) becomes distorted.
Please see attachment. You will see that the letters 'n' and 'a' are distorted. It's driving me crazy, any help would be much appreciated.
I've fixed this!
I saved the object as a SVG, then copied the SVG file over to the file that I wanted to use the logo on! Job done. Kind of impressed with myself too.

Convert PNG image to SVG / Vector

We are desperate to convert an image so that it can be used as an image map. Everything I have tried, really doesnt cut the mustard. I havent the experience to work at very high resolutions.. plus I dont know the terminology and neither have the skills or resources to invest in learning how to do this, knowing many others on here and the internet have far greater experience.
I have downloaded and played with Inkscape, but really am going round in circles...
So thought I would ask here.
What I am after is similar to Raphael Australia Map or David Lynchs, http://davidlynch.org/js/maphilight/docs/demo_usa.html
No frills, no effects, just change the state color of the map on hover and retain that event on click.
Here is what we have ...
What we have is a MAP like this.
We lost the original file, which was pure gray. I have this left :(
Anyway, we want it so that each state ( including the territory ACT ) not indicated on the above map, represented in pink #ec008c . On hover
Map needs to be FLAWLESS !! Also require that any imagery must be png and transparent bg.
Must remain exact size as above. Must be extremely accurate on svg coordinates, and optionally would like the STATE text to appear , like the QLD is shown on the image above, but not wholly necessary.
Can anyone point me in the right direction please.
Have you tried Path > Trace Bitmap in Inkscape? If you play with the settings you should be able to get a decent vectorised image.
Vectorised:
EPS:
http://dl.dropbox.com/u/13402937/Australia.eps
Adobe Illustrator:
http://dl.dropbox.com/u/13402937/Australia.ai
try to use this tool, its the potrace part to trace pixelpictures in inkscape with many features. potrace traces pictures from commandline
I have obtained extraordinary results with https://vectormagic.com/ , which can be tried online.

Flex Pan & Zoom with vector images

I've looked at http://www.adobe.com/devnet/flex/samples/fig_panzoom/ for pan & zoom, and it does a very good job of it. However, it only works with raster images. Does anyone know how to modify this for vector images (SVG converted to SWF).
My limited attempts have not gone well, as the Imageviewer.as class is clearly designed around bitmaps.
I can load the SVG images in an Image, but I'd really like to pan & zoom too.
Thanks.
Have you looked at OpenZoom? AFAIK it supports anything that can be loaded on the stage.

Resources